c语言自定义函数返回值错误,求助
intjc(intn){if(n!=0){printf("%d-%d\n",jcjg,n);jcjg=jcjg*n;jc(n-1);}returnjcjg;}******...
int jc(int n)
{
if(n != 0)
{
printf("%d-%d\n",jcjg,n);
jcjg = jcjg * n;
jc(n - 1);
}
return jcjg;
}
************带上else************
int jc(int n)
{
if(n != 0)
{
printf("%d-%d\n",jcjg,n);
jcjg = jcjg * n;
jc(n - 1);
}
else
{
return jcjg;
}
}
jcjg是全局变量。
一开始用的判断else语句,但答案错误,发现else语句被递归语句短路了。于是把else语句去掉。直接用return试试。这样答案正确了!后来仔细一想,在递归过程中,return其实也被短路了,但又两种情况的结果不同?谢谢 展开
{
if(n != 0)
{
printf("%d-%d\n",jcjg,n);
jcjg = jcjg * n;
jc(n - 1);
}
return jcjg;
}
************带上else************
int jc(int n)
{
if(n != 0)
{
printf("%d-%d\n",jcjg,n);
jcjg = jcjg * n;
jc(n - 1);
}
else
{
return jcjg;
}
}
jcjg是全局变量。
一开始用的判断else语句,但答案错误,发现else语句被递归语句短路了。于是把else语句去掉。直接用return试试。这样答案正确了!后来仔细一想,在递归过程中,return其实也被短路了,但又两种情况的结果不同?谢谢 展开
1个回答
展开全部
有 else 是
只有 n == 0 return jcjg;返回jcjg 否则不确定返回何值(实际返回 eax 寄存器的最后一次值)
没有 else 任何时候 return jcjg;总是会返回jcjg。
不过没见过这样用递归的,
像这种简单计算,正常都是用迭代处理,不用递归的;
只有像树一类的复杂的数据结构,和排序或更复杂的算法,才用递归实现.
int jc(int n)
{
if(n != 0)
{
printf("%d-%d\n",jcjg,n);
jcjg = jcjg * n;
//jc(n - 1);改成
return jc(n - 1);看行不行;
}
else
{
return jcjg;
}
}
只有 n == 0 return jcjg;返回jcjg 否则不确定返回何值(实际返回 eax 寄存器的最后一次值)
没有 else 任何时候 return jcjg;总是会返回jcjg。
不过没见过这样用递归的,
像这种简单计算,正常都是用迭代处理,不用递归的;
只有像树一类的复杂的数据结构,和排序或更复杂的算法,才用递归实现.
int jc(int n)
{
if(n != 0)
{
printf("%d-%d\n",jcjg,n);
jcjg = jcjg * n;
//jc(n - 1);改成
return jc(n - 1);看行不行;
}
else
{
return jcjg;
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |