c语言程序,题目要求递归调用,我感觉我这没错呀,求的是1到100的累加,我输入100以后,结果却为
c语言程序,题目要求递归调用,我感觉我这没错呀,求的是1到100的累加,我输入100以后,结果却为-858988410,而且我不管输入多少层结果都是这个,求改正与解释...
c语言程序,题目要求递归调用,我感觉我这没错呀,求的是1到100的累加,我输入100以后,结果却为-858988410,而且我不管输入多少层结果都是这个,求改正与解释
展开
7个回答
展开全部
递归不是这么用的,你差一个限定条件,if (n == 1) return 1;再把if(n > 0)改成if(n > 1),改了之后再试试
int a;
if(n == 1)
return 1;
if(n > 1)
{
a = n + fun(n-1);
}
return a;
int a;
if(n == 1)
return 1;
if(n > 1)
{
a = n + fun(n-1);
}
return a;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int a; //这一句没有给a初始值,那么在编译时可能就会被随机赋值,而且这个随机值一般是多位的,有时有些编译器可能会默认为0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
调用的里面n的值一直等于100,就没有发生过变化
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include<iostream>
using namespace std;
int fun(int d)
{
if(d<=0)
return 0;
else return d+fun(--d);
}
int main()
{
int sum=100;
printf("%d\n",fun(sum));
return 0;
}
#include<iostream>
using namespace std;
int fun(int d)
{
if(d<=0)
return 0;
else return d+fun(--d);
}
int main()
{
int sum=100;
printf("%d\n",fun(sum));
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加一句if(n == 1) return 1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询