一个简单的递归问题,哪位大神帮忙看下,谢谢谢谢
#include <stdio.h>int test(int n)
{
if(n < 2)
return 1;
else
return n * test(--n);
}
int main()
{
int a = test(10);
printf("%d\n", a);
return 0;
}
我自己推出来的结果是10的阶乘, vc6.0运算的结果却是362880
哪位大神给帮忙看下 return n * test(--n);这句中,如果先对n进行--并导致n的值减一,再对n*中的n求值,就会导致错误。(而这两者的顺序,C语言标准没有规定先后,所以这样变成在不同编译器上有可能得到不同的结果) #include<stdio.h>
int jc(int n);
int main()
{
printf("%d\n",jc(10));
return 0;
}
int jc(int n)
{
if(2 == n)
{
return 2;
}
else
{
return n * jc(n-1);
}
} 学习一下~ 牡丹花下死做鬼 发表于 2015-9-9 21:37
我的代码写的不规范?谢谢您的指正 仰望天上的光 发表于 2015-9-9 21:14
return n * test(--n);这句中,如果先对n进行--并导致n的值减一,再对n*中的n求值,就会导致错误。(而这两 ...
谢谢您 学习了:handshake 领鱼币 感谢楼主谢谢你 学习了
页:
[1]