1、 下面程序运行的结果是120,若把abs(1)改为1,则运行的结果是1,试分析为什么?
int fact(){
static int i=5;
if(i= = 0){
   return 1;
}else{
i = i-1;
return ((i+abs(1))*fact());
}
}
main(){
printf(“factor of 5=%d\n”,fact());
}

解决方案 »

  1.   

    1、static 能放在方法内码?
    2、相等的判断,两个等号间要空格吗?
    3、这个是JAVA程序吗?
    4、栈没有溢出吗?
      

  2.   

    你那求的是阶乘,是个递归算法。因为5!=120,1!=1,所以当然是i = 5 输出120,当i = 1的时候输出1。
    不过你要是传大点的数进去就会出现栈溢出,不信你传1000进去就Over。两个等号中间有空格是作者写的时候不小心加进去的吧,在程序应该编译不过。