k阶斐波那契数列fibonacci第n项求值

已知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 } 

大家有其他更好的算法,欢迎留言讨论,共同学习。

关于斐波那契的一个小段子,跟大家分享,说学校食堂的菜就是八大菜系之后的第九大菜系斐波那契菜,哈哈哈。

博客地址:https://www.cnblogs.com/r-yan/

猜你喜欢

转载自www.cnblogs.com/r-yan/p/11652851.html