python编写递归函数和非递归函数、输出斐波那契数列_分别用非递归和递归的方法编写函数求斐波那契数列第n项。斐波那契数列1,1,2,3,5,8,13,…...
展開(kāi)全部
/**
已知Fibonacci數(shù)列:1,1,2,3,5,8,……,F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)
*/
#include
#include
typedef long long int int64;
//方法1,遞歸法
int64 Fibonacci(int n)
{
int64 sum;
if(n<=0)
{
printf("參數(shù)值e68a84e8a2ad3231313335323631343130323136353331333433616236非法!\n");
exit(-1); //直接終止程序
}
if(n==1 || n==2)
return 1;
else
sum=Fibonacci(n-1)+Fibonacci(n-2);
return sum;
}
非遞歸法
int64 Fibonacci2(int n)
{
int64 a,b,c;
if(n<=0)
{
printf("參數(shù)值非法!\n");
exit(-1); //直接終止程序
}
if(n==1 || n==2)
return 1;
a=b=1; ?//對(duì)前兩項(xiàng)的值初始化
n=n-2; ?//因?yàn)槭菑牡?項(xiàng)開(kāi)始記次數(shù),所以減2
while(n > 0)
{
c=a+b;
a=b;
b=c;
n--;
}
return c;
}
//測(cè)試主函數(shù)
int main()
{
int n;
scanf("%d",&n); //輸入n
//printf("F(%d)=%lld\n",n,Fibonacci(n));
printf("F(%d)=%lld\n",n,Fibonacci2(n));
return 0;
}
//示例運(yùn)行結(jié)果
F:\c_work>a.exe
5
F(5)=5
F:\c_work>a.exe
6
F(6)=8
program fibo;var n,i:integer; rs:extended;function fib(m:integer):extended;var a,b:extended;
begin
a:=1;b:=1;if m<=2 then exit(1)else while m>3 do begin
fib:=a+b;a:=b;b:=fib;m:=m-1;end;exit(fib);end;
begin
read(n);writeln(fib(n));end.
擴(kuò)展資料:
從第二項(xiàng)開(kāi)始,每個(gè)偶數(shù)項(xiàng)的平方都比前后兩項(xiàng)之積少1,每個(gè)奇數(shù)項(xiàng)的平方都比前后兩項(xiàng)之積多1。
如:第二項(xiàng)1的平方比它的前一項(xiàng)1和它的后一項(xiàng)2的積2少1,第三項(xiàng)2的平方比它的前一項(xiàng)1和它的后一項(xiàng)3的積3多1。
(注:奇數(shù)項(xiàng)和偶數(shù)項(xiàng)是指項(xiàng)數(shù)的奇偶,而并不是指數(shù)列的數(shù)字本身的奇偶,比如從數(shù)列第二項(xiàng)1開(kāi)始數(shù),第4項(xiàng)5是奇數(shù),但它是偶數(shù)項(xiàng),如果認(rèn)為5是奇數(shù)項(xiàng),那就誤解題意,怎么都說(shuō)不通)
證明經(jīng)計(jì)算可得:[f(n)]^2-f(n-1)f(n+1)=(-1)^(n-1)
總結(jié)
以上是生活随笔為你收集整理的python编写递归函数和非递归函数、输出斐波那契数列_分别用非递归和递归的方法编写函数求斐波那契数列第n项。斐波那契数列1,1,2,3,5,8,13,…...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 项目一计算机基础知识考核题,2013计算
- 下一篇: 快手极速版如何解除绑定手机号,切不绑定新