| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5107 人关注过本帖
标题:求助,用递归求解斐波拉契数列
只看楼主 加入收藏
wahn1992
Rank: 1
等 级:新手上路
帖 子:21
专家分:7
注 册:2013-3-11
结帖率:60%
收藏
已结贴  问题点数:20 回复次数:4 
求助,用递归求解斐波拉契数列
题目,已知二阶fibonacci数列:fib(n)={0   n=0;                 定义递归函数求fib(10)
                                     1    n=1;
                                     fib(n-1)+fib(n-2)    n>1}
我的代码无法运行求高手帮助
#include <stdio.h>
int fib(int n)
{
    int f=0;
    if(n=0)
        f=0;
    else
        if(n=1)
            f=1;
        else
            f=f+fib(n--);
    return (f);
}
void main()
{
    int n,f;
    printf("please input n:");
    scanf("%d",&n);
    f=fib(n);
    printf("f%n=%d\n",f);
}
搜索更多相关主题的帖子: include please return 
2013-05-06 22:06
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:5 
if(n=0)
        f=0;
    else
        if(n=1)
            f=1;
        else
            f=f+fib(n--);
    return (f);
上面的是比较语句,不是赋值:if(n=1)、  if(n=0)应该是连个等于号,而且你的小于零的处理也没有


Maybe
2013-05-06 22:24
Ryker
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:145
专家分:420
注 册:2013-2-19
收藏
得分:5 
程序代码:
/*
用循环实现 .... 代码未经测试... 估计没问题
分析。。。
从第三位开始,每一位都是前两位数之和

n2(1)  n1(0)     sum=n1+n2(1) //第一次循环

      n2=n1(0)   n1=sum(1)   sum=n1+n2(1)   //第二次循环

                 n2=n1(1)    n1=sum(1)  sum=n1+n2(2)   //第三次循环

                             n2=n1(1)   n1=sum(2)  sum=n1+n2(3) //第四次循环

                                        n2=n1(2)    n1=sum(3)  sum=n1+n2(5)  //第五次循环
                     1          1           2            3          5          8         13       21 。。。

*/
for(i = 1, sum = 0, n1 = 0, n2 = 1; i <= num; i++)   // num 是要计算多少位
{
    sum = n1 + n2;  //前两位相加
    n2 = n1;          //将前面第一位变为前面第二位
    n1 = sum;        //将当前位变为前面第一位 
    
    printf("%d  ", sum);
}


[ 本帖最后由 Ryker 于 2013-5-7 10:04 编辑 ]
2013-05-06 23:20
小小玉
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:47
专家分:156
注 册:2013-4-13
收藏
得分:10 
#include <stdio.h>
int fib(int n)
{
    if(n<=2)
        return(1);
    if(n>=3)
        return(fib(n-1)+fib(n-2));
}

 void main()
 {
     int n,f;
     printf("please input n:");
     scanf("%d",&n);
     f=fib(n);
     printf("f=%d\n",f);
 }
2013-05-06 23:30
liu_鹏
Rank: 2
等 级:论坛游民
帖 子:33
专家分:75
注 册:2013-4-16
收藏
得分:0 
4楼正解。  你的自定义函数算法有问题。。  自己再看看。

不懂就发帖。懂了就恢复。
2013-05-07 13:21
快速回复:求助,用递归求解斐波拉契数列
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012180 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved