Banner Home Page DIY Contests Problems Ranklist Status Statistics
1034数据再次加强,如果还能水过我不管了……

坑爹的斐波那契——递推

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 100   Accepted Submission(s) : 41

Font: Times New Roman | Verdana | Georgia

Font Size:

Problem Description

用上一题的递归斐波那契代码,输入41 43 45,看看程序要跑多久,再输入80呢

想办法修改函数,看看在求fib(41)的时候,fib(5)被调用了多少次

解决这个问题的一个办法是记忆化,即用一个数组记录某个fib值是否求过,如果已经求得结果,那么直接返回这个值,否则递归求解

对于斐波那契,我们可以用更直接的递推方式求解
我们定义数组fib[],初始化fib[1] = fib[2] = 1
那么此时我们可以求得fib[3] = fib[2] + fib[1]
继而有可以求得fib[4] = fib[3] + fib[2]
即可以通过for循环,递推求得fib数组

使用递推方式解决此题,求fib(n) , n <= 80

Input

输出包含多组数据,每组数据包含一个正整数n,不超过80

Output

对于每组数据,输出fib(n)

Sample Input

1
3
5
7

Sample Output

1
2
5
13

Author

916852

Statistic | Submit | Back