已知K階斐波那契數列定義爲:
f0 = 0, f1 = 0, … , fk-2 = 0, fk-1 = 1;
fn = fn-1 + fn-2 + … + fn-k , n = k , k + 1, …算法
給定階數k和n的值,求fn的值。函數
既然是遞歸數列,那咱們就用遞歸函數來實現,具體代碼以下:學習
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int func(int k, int n); 5 6 int fibonacci(int k, int n){ 7 8 if(k<1){ 9 return 0; 10 } 11 12 if(n<k){ 13 return 0; 14 } 15 int i = 0; 16 int sum = 0; 17 for(i=1;i<=n;i++){ 18 sum = func(k, i); 19 20 printf("fibonacci %d sum is %d\n", i, sum); 21 } 22 23 24 return 0; 25 } 26 27 int func(int k, int n) 28 { 29 int i = 0,sum = 0; 30 if(n<k-1){ 31 return 0; 32 }else if(n == k-1){ 33 return 1; 34 }else{ 35 for(i=1;i<k+1;i++){ 36 sum = sum+func(k, n-i); 37 } 38 } 39 return sum; 40 } 41 42 int main(){ 43 44 int k,n; 45 printf("Please input fibonacci order:\n"); 46 scanf("%d",&k); 47 printf("Please input fibonacci num :"); 48 scanf("%d",&n); 49 fibonacci(k, n); 50 51 52 return 0; 53 54 }
你們有其餘更好的算法,歡迎留言討論,共同窗習。spa
關於斐波那契的一個小段子,跟你們分享,說學校食堂的菜就是八大菜系以後的第九大菜系斐波那契菜,哈哈哈。code
博客地址:https://www.cnblogs.com/r-yan/blog