用递归函数求斐波那契数列的第n项的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用递归函数求斐波那契数列的第n项的值相关的知识,希望对你有一定的参考价值。
斐波那契函数的定义为
fib(n)=1 (n=0)
1 (n=1)
fib(n-1)+fib(n-2) (n>1)
#include <stdio.h>
int Fibonacci(int n)
if( n == 1 || n == 2) // 递归结束的条件,求前两项
return 1;
else
return Fibonacci(n-1)+Fibonacci(n-2); // 如果是求其它项,先要求出它前面两项,然后做和。
int main()
int n;
printf("please input n: ");
scanf("%d",&n);
printf("Result: %d\\n",Fibonacci(n));
return 0;
在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用。
扩展资料:
一个完全是自然数的数列,通项公式却是用无理数来表达的。而且当n趋向于无穷大时,前一项与后一项的比值越来越逼近黄金分割0.618(或者说后一项与前一项的比值小数部分越来越逼近0.618)。
从第二项开始,每个偶数项的平方都比前后两项之积少1,每个奇数项的平方都比前后两项之积多1。
如:第二项1的平方比它的前一项1和它的后一项2的积2少1,第三项2的平方比它的前一项1和它的后一项3的积3多1。
注:奇数项和偶数项是指项数的奇偶,而并不是指数列的数字本身的奇偶,比如从数列第二项1开始数,第4项5是奇数,但它是偶数项,如果认为5是奇数项,那就误解题意,怎么都说不通。
参考资料来源:百度百科--斐波那契数列
参考技术A #include <stdio.h>int fib(int n)
if(n<3)return 1;
return fib(n-1)+fib(n-2);
int main()
int n;
scanf("%d",&n);
printf("%d\\n",fib(n));
return 0;
参考技术B #include<stdio.h>
fib(int n)
if(n==0) return(0);
else if(n==1) return(1);
else
return(fib(n-1)+fib(n-2));
main()
int n,s;
scanf("%d",&n);
s=fib(n);
printf("%d\n",s);
本回答被提问者和网友采纳 参考技术C #include<stdio.h>
int
fun(int t)
if(t==0)return 0;
if(t==1)return 1;
else return fun(t-1)+fun(t-2);
int
main()
int n;
scanf("%d",&n);
printf("%d\n",fun(n));
return 0;
参考技术D 这个还是比较不错的一个选项
c语言中,。编写程序求斐波那契数列的第n项和前n项之和。大家看好是【第】n项的值和前n项的合= =。
编写程序求斐波那契数列的第n项和前n项之和。斐波那契数列是形如
0, 1, 1, 2, 3, 5, 8, 13, ...
其通项为:
F[0]=0
F[1]=1
F[n]=F[n-1]+F[n-2]
程序运行结果如下:
Please input the number of terms:
6
f(6)=8
sum(6)=20
求大大们指点。如何求出第N项的值。 要求输出和 题目要求一样。不要写出来是 前N项所有的值。。
我新手 这个能用循环做出来 我想用数组怎么办? 我刚学数组。递归美学。。指针更没学呢 - -求大大们给个完整的方法额。
int i,n,s=1,f[]=0,1,1;
printf("Please input the number of terms:");
scanf("%d",&n);
if(n==0)s=0;f[2]=0;
for (i=2;i<=n;i++)
f[2]=f[1]+f[0];f[0]=f[1];f[1]=f[2];
s+=f[1];
printf("f(%i)=%i\n",n,f[2]);
printf("Sum(%i)=%i\n",n,s);
scanf("%d");
参考技术A 如果你用循环做的话当i=n时停止循环并输出就可以了,如果你用递归做那就从n向前递归就没问题了。 参考技术B fun(*a,n)
以上是关于用递归函数求斐波那契数列的第n项的值的主要内容,如果未能解决你的问题,请参考以下文章