0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GOLangでフィボナッチ数を計算した

Posted at

はじめに

直近Go言語を勉強していますが、なんか数学問題を解けてみまたいため、フィボナッチ数を計算できるロジックを作成しました。

環境

window 10
VSCode

Target

以下の結果を出力する

フィボナッチ数:(0,1,1,2,3,5...)

簡単に回帰関数を利用して、作りました。

package.go
package main

import "fmt"

func fibonacci() func(x int) int {
	return func(x int) int {
		if x < 2 {
			return x
		}
		f := fibonacci()
		return f(x-2) + f(x-1)
	}
}

func main() {
	f := fibonacci()
	for i := 0; i < 10; i++ {
		fmt.Println(f(i))
	}
}

実行結果:

0
1
1
2
3
5
8
13
21
34

結果ができましたね。しかし、計算量が

O(2^n)

だった。
根本的になおしました。

package.go
package main

import "fmt"

func fibonacci() func(x int) int {
	return func(x int) int {
		a, b:= x%2, 1
		for i := 0;i < x/2; i++{
		  a += b
		  b += a
		}
		return a
	}
}

func main() {
	f := fibonacci()
	for i := 0; i < 10; i++ {
		fmt.Println(f(i))
	}
}

これで良さそうですね。
計算量が

O(n)

になりました。良さそうですね。

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?