2级C中一题不懂解决方法
2级C中一题不懂
int fun(int s1,s2)
{
int i,j;
i=s2%10;
j=s2/10;
if(s2<10)
return s2;
s1=s1*10+i;
fun(s1,j);
return(s1);
}
void main(0
{
printf("%d",fun(0,5678));
}
答案为8. fun(s1,j);这一句函数调用不理解,求解释。
------解决方案--------------------
递归调用的函数参数传递是按值传递,返回值又没处理,完全没起作用,空跑了,迷惑性的。
------解决方案--------------------
明白一句话,返回的S1是你第一次调用的时候的s1由于fun()是值传递,不会修改s1所以s1就是第一次调用的s1就是8
int fun(int s1,s2)
{
int i,j;
i=s2%10;
j=s2/10;
if(s2<10)
return s2;
s1=s1*10+i;
fun(s1,j);
return(s1);
}
void main(0
{
printf("%d",fun(0,5678));
}
答案为8. fun(s1,j);这一句函数调用不理解,求解释。
------解决方案--------------------
递归调用的函数参数传递是按值传递,返回值又没处理,完全没起作用,空跑了,迷惑性的。
------解决方案--------------------
明白一句话,返回的S1是你第一次调用的时候的s1由于fun()是值传递,不会修改s1所以s1就是第一次调用的s1就是8