編寫程式,利用遞迴函式求斐波那契數列(0,1,1,

2021-07-23 17:28:06 字數 4549 閱讀 5406

1樓:匿名使用者

答案為1.可以從第三位與第一位的差為1,第四位與前兩位的和,差為1,以此類推,得100項與前98項之和的差是1.

2樓:波波羅克羅伊斯

因為用了很沒有效率的遞迴,所以出結果有點慢#include

f(int);

main()

cout<

cout<<"前100項的和為"<

}f(int i)

3樓:匿名使用者

第一,這個題目用遞迴函式的話,算出結果肯定要花好長時間的。估計至少要半個多小時以上,機器差的話肯定不止。實際上用遞推的話會省掉非常多的時間的。

第二,這個當數列到了40多項的時候,用int型或者__int64都是裝不下的。所以後面的資料會是錯誤的。因此,此題又涉及到高精度的問題了。

用高精度來寫遞迴的加法。這樣的話時間複雜度就更大了。估計得跑幾個小時吧。

這裡給你個簡單的遞迴的求出前30項的和。如果真的要100項的話只能用高精度來寫了。估計也不一定有人會幫你寫。

簡單的遞迴程式(即不考慮超出int型範圍的情況)如下:

#include

using namespace std;

int f(int n)

int main()

cout<

4樓:

#include

#include

using namespace std;

int main()

printf("%21.0f\n",fsum);

return 0;}

5樓:匿名使用者

int fib(int n)

return -1;

}int main(void)

c語言,程式設計實現,求斐波那契數列,1,1,2,3,5,8,......的前20項及前20項和

6樓:珈藍惜夢

c語言源程式如下:#include

int main()

;//斐波那契數列前兩個元素均為0

int i=0;//迴圈變數

int n=20;//數列需要求的個數

int sum = 0;//和變數

for(i=2;i

printf("arr[1]-arr[%d] = ", n);//提示輸出數列元素

for (i = 0; i < n; i++)//遍歷數列printf("\n%d ", sum);//輸出求和結果return 0;

}程式執行結果如下:擴充套件資料:利用遞迴原理進行求斐波那契數列的求解和求前n項和:

#include

int fibonacci(int n) //遞迴函式int main()

return 0;}

7樓:天雨下凡

#include

int fib(int n);

int main(void)

printf("\n前20項之和為:%d\n",sum);

}int fib(int n)

8樓:聽不清啊

#include

int main()

printf("\nsum=%d\n",s);

return 0;}

用遞迴演算法實現斐波那契數列1,1,2,3,5,8,13……的前20項,每輸出5項一換行,用c++

9樓:匿名使用者

|#include

using namespace std;

int f(int n)

return f(n -1) + f(n-2);

}int main()

else

}return 0;

}執行結果內:容

10樓:匿名使用者

#include

#include

using namespace std;

int fibo(int i)

int main()}

分別用非遞迴和遞迴的方法編寫函式求斐波那契數列第n項。斐波那契數列1,1,2,3,5,8,13,…

11樓:墨汁諾

/**已知fibonacci數列: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)

if(n==1 || n==2)

return 1;

else

sum=fibonacci(n-1)+fibonacci(n-2);

return sum;

}非遞迴法

int64 fibonacci2(int n)

if(n==1 || n==2)

return 1;

a=b=1;  //對前兩項的值初始化

n=n-2;  //因為是從第3項開始記次數,所以減2

while(n > 0)

return c;

}//測試主函式

int main()

//示例執行結果

f:\c_work>a.exe

5f(5)=5

f:\c_work>a.exe

6f(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.

用c語言程式設計 斐波那契數列:1,1,2,3,5,8,13…,輸出前13項,每行輸出5個數。

12樓:

1、首先開啟c語言軟體,在主函式main中,宣告定義一個長度為20個元素的陣列,並且給第0個第1個元素賦值為1。

2、然後利用for迴圈來完成對前20項的和,如下圖所示。

3、並將結果輸出,執行程式,如下圖所示。

4、執行程式,結果如下圖所示,這樣就完成了。

13樓:問明

public class feibomethodpublic static void main(string args)

}  }

使用陣列的方式實現

publicclassfeibomethod{//定義陣列方法

publicstaticvoidmain(string[]args){

intarr[]=newint[13];

arr[0]=arr[1]=1;

for(inti=2;i<arr.length;i++){arr[i]=arr[i-1]+arr[i-2];

}system.out.println("斐波那契數列的前13項如下所示:");

for(inti=0;i<arr.length;i++){if(i%5==0)

system.out.println();

system.out.print(arr[i]+"\t");}}}

14樓:匿名使用者

這是典型的遞迴演算法,

int fact(int n )

在main方法裡列印就行了 每5個字元,打個換行,當然樓上用陣列也能實現,不過這種題目就是為了解釋迭代方法的,熟悉熟悉迭代是有好處的

15樓:小倍王子

相對於其他人的**,我的**絕對是執行速度最快的,沒有之一。

#include

int a[13];

int main()

printf("\n");

return 0;}

16樓:匿名使用者

#include "stdio.h"

#include "math.h"

main()

a[n]=(1/sqrt(5))*(x-y);

}else

a[n]=a[n-1]+a[n-2];

}for(n=0;n<13;n++)

getch(); /* win-tc*/}

17樓:魚兒戀上了貓

#include}

18樓:賓利利民撒呃呃

#include

int main()}

計算斐波拉契數列的的程式,看不懂遞迴請大神詳細講解一下

指的是這樣抄一個數 列 0 1 1 2 3 5 8 13 21 在數學上,斐波納契數列以如下被以遞迴的方法定義 f0 0,f1 1,fn f n 1 f n 2 n 2,n n 用文字來說,就是斐波那契數列列由 0 和 1 開始,之後的斐波那契數列係數就由之前的兩數相加。return fib g 1...

求用C語言表達斐波那契數列

斐波那契數列,又稱 分割數列,指的是這樣一個數列 0 1 1 2 3 5 8 13 21 34 專 在數學上,斐波屬納契數列以如下被以遞迴的方法定義 f 0 0,f 1 1,f n f n 1 f n 2 n 2,n n 在現代物理 準晶體結構 化學等領域,斐波納契數列都有直接的應用,為此,美國數學...

建立一個生成n位的斐波那契數列的函式要那些知識?

建立一個生成n位的斐波那契數列的函式,如果沒有學習陣列知識的話,通過簡單的變數也可以實現的,只要掌握了迴圈的知識以及變數賦值的方法就可以了。電的生產過程極為複雜,需經過發電 輸電 配電以及用電等多個過程。其中發電指的是生產電能的地方,例如 火電單位 水電單位等 輸電是指利用高壓線路完成電力輸送的操作...