首页 > 试题广场 >

斐波那契数列

[编程题]斐波那契数列
  • 热度指数:15454 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。
斐波那契数列是一个满足 的数列
数据范围:
要求:空间复杂度 ,时间复杂度 ,本题也有时间复杂度 的解法


输入描述:
仅输入一个正整数 n。


输出描述:
输出斐波那契数列中第 n 个数。
示例1

输入

4

输出

3

说明

根据斐波那契数列的定义可知,fib(1)=1,fib(2)=1,fib(3)=fib(3-1)+fib(3-2)=2,fib(4)=fib(4-1)+fib(4-2)=3,所以答案为3。   
示例2

输入

1

输出

1
示例3

输入

2

输出

1
package main

import (
    "fmt"
)

func main() {
    var n int
    fmt.Scanf("%d",&n)
    if n<=2{
        fmt.Println(1)
        return
    }
    p,q,r:=1,1,2
    for i:=4;i<=n;i++{
        p=q
        q=r
        r=p+q
    }
    fmt.Println(r)
}

发表于 2023-02-04 10:16:41 回复(0)
package main

import "fmt"

func main() {
	var n uint8
	_, _ = fmt.Scan(&n)
	//var num = 1
	//var l1 = 1
	//var l2 = 1
	//
	//for n > 0 {
	//	if n < 3 {
	//		break
	//	} else {
	//		num = l1 + l2
	//		l1 = l2
	//		l2 = num
	//		n--
	//	}
	//	fmt.Printf("{%d:%d},\n",42-n,num)
	//}
	m := map[uint8]int32{
		1:  1,
		2:  1,
		3:  2,
		4:  3,
		5:  5,
		6:  8,
		7:  13,
		8:  21,
		9:  34,
		10: 55,
		11: 89,
		12: 144,
		13: 233,
		14: 377,
		15: 610,
		16: 987,
		17: 1597,
		18: 2584,
		19: 4181,
		20: 6765,
		21: 10946,
		22: 17711,
		23: 28657,
		24: 46368,
		25: 75025,
		26: 121393,
		27: 196418,
		28: 317811,
		29: 514229,
		30: 832040,
		31: 1346269,
		32: 2178309,
		33: 3524578,
		34: 5702887,
		35: 9227465,
		36: 14930352,
		37: 24157817,
		38: 39088169,
		39: 63245986,
		40: 102334155}
	fmt.Println(m[n])
}

发表于 2022-06-06 14:49:04 回复(1)
package main

import "fmt"

func main() {
	var n int
	fmt.Scanln(&n)
	first, two, curr := 1, 1, 1
	for i := 3; i <= n; i++ {
		curr = first + two
		first, two = two, curr
	}
	fmt.Println(two)
}

发表于 2022-05-01 14:27:00 回复(0)