| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1369 人关注过本帖
标题:递归调用运行错误
只看楼主 加入收藏
勿乱
Rank: 2
等 级:论坛游民
帖 子:21
专家分:58
注 册:2017-2-7
结帖率:100%
收藏
已结贴  问题点数:15 回复次数:7 
递归调用运行错误
计算Fibonacci 数列各项的平方和,即求F12+F22+F32+.....Fn2的值(Fibonacci数列是这样一列数:0,1,1,2,3,5,8、、、),下面是我使用的一个递归算法求的,编译没有错误,运行就出了问题,编译器显示...exe 已停止工作,这是哪里出了问题呢?
#include<stdio.h>
#include<math.h>
long Add(int n);
long Fib(int n)
{
    int f;
    if(n==0)
        f=0;
    else if(n==1)
        f=1;
    else
        f=Fib(n-1)+Fib(n-2);
    return f;
}
long Add(int n)
{
    int num;
    if(n==0)
        num=0;
    else if(n==1)
        num=1;
    else
        num=Add((int)pow(Fib(n-1),2))+Add((int)pow(Fib(n-2),2));
    return num;
}
int main()
{
int n;
printf("Input n:\n");
scanf("%d",&n);
printf("%d",Add(n));
return 0;
}


搜索更多相关主题的帖子: include return 编译器 
2017-02-11 20:33
勿乱
Rank: 2
等 级:论坛游民
帖 子:21
专家分:58
注 册:2017-2-7
收藏
得分:0 
上面平方没有打出来,是F1平方+F2平方+....Fn平方

[此贴子已经被作者于2017-2-11 20:37编辑过]

2017-02-11 20:35
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:3 
递归调用3个函数,好恐怖。
研究了半天,完全搞不懂。
我输入一个还算比较小的数字,CPU占用竟然高达45%

[此贴子已经被作者于2017-2-11 20:56编辑过]

收到的鲜花
  • 勿乱2017-02-11 21:20 送鲜花  4朵   附言:没功劳有苦劳,辛苦了

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-02-11 20:38
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
算了,不想了,好麻烦的样子。

[此贴子已经被作者于2017-2-11 20:52编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-02-11 20:42
惊悚s
Rank: 2
等 级:论坛游民
帖 子:3
专家分:12
注 册:2015-12-10
收藏
得分:2 
逻辑估计有点问题 在Add函数中 最前面加一句printf("%d\n",n);  输入4 时能看到 一直再输出4 逻辑需要改改吧
2017-02-11 21:00
勿乱
Rank: 2
等 级:论坛游民
帖 子:21
专家分:58
注 册:2017-2-7
收藏
得分:0 
回复 3楼 renkejun1942
。。。。。。难怪我运行的时候显示文件停止运行,我在Add这个被调函数里调用了Fib这个被调函数,不知道是不是这个地方出了问题。不过还是辛苦大虾你了
2017-02-11 21:16
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:10 
从0开始, 输入4时 F1平方+F2平方+F3平方+F4平方+F5平方
程序代码:
#include<stdio.h>
#include<math.h>
long Add(int n);
long Fib(int n)
{
    
    if(n==0)
        return 0;
    else if(n==1)
        return 1;
    else 
        return Fib(n-1)+Fib(n-2);
    
}
long s=0;
long Add(int n)
{
    if(n==-1)
    {
        return 0;
    }
    s+=(Fib(n)*Fib(n));
    
    return Add(n-1);
        
    
}
int main()
{
int n;
printf("Input n:\n");
scanf("%d",&n);
Add(n);
printf("%ld",s);
return 0;
}



早知做人那么辛苦!  当初不应该下凡
2017-02-11 23:19
勿乱
Rank: 2
等 级:论坛游民
帖 子:21
专家分:58
注 册:2017-2-7
收藏
得分:0 
回复 7楼 炎天
版主大哥好厉害
2017-02-12 08:52
快速回复:递归调用运行错误
数据加载中...
 
   



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

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