写一个函数,输入n,求斐波那契数列(Fibonacci)的第n项。
延申题目:青蛙跳台阶的问题:一只青蛙一次跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的太极总共有多少种跳法。
当有0阶台阶时,有0种跳法。
1 ******************************** 1
2 ******************************** 2
当n大于2时,第一次跳有两种跳法,1、跳一阶。此时的跳法数目为后面的n-1阶跳法数目。2、跳两阶,此时的跳法数目为n-2阶跳法数目。所以总的跳法数目为f(n-1) + f(n-2)。
3 ******************************** 3
4 ******************************** 6
n ******************************** f(n-1) + f(n-2)
实际上也是一种斐波那契数列,只是f(2)不一样。
第一种:
#include "../common.h"
u_int64_t fibonacci(u_int32_t n)
{
if(n <= 1)
{
return n;
}
else
{
return fibonacci(n-1) + fibonacci(n-2);
}
}
int main()
{
clock_t startTime,endTime;
int n;
printf("please input n = ");
scanf("%d",&n);
getchar();
startTime = clock();
u_int64_t data = fibonacci(n);
printf("fibonacci(%u) = %lu\n",n,data);
endTime = clock();
printf("run t

博客介绍了如何使用递归和循环两种方式来计算斐波那契数列的第n项,并探讨了青蛙跳台阶问题,这是一个与斐波那契数列相似的问题。通过示例代码展示了两种方法的时间效率差异,递归方法在处理大数值时效率较低,而循环方法的时间复杂度为O(n),运行速度快得多。
最低0.47元/天 解锁文章
5608

被折叠的 条评论
为什么被折叠?



