• 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
    ", 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:
    ");
    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/

  • 相关阅读:
    Qt 添加外部库文件
    实例属性的增删改查
    面向对象2 类属性的增删改查
    面向对象
    hashlib模块
    configparser模块
    logging模块
    re模块2
    计算器 暂时没解决小数问题
    re正则表达式
  • 原文地址:https://www.cnblogs.com/r-yan/p/11652851.html
Copyright © 2020-2023  润新知