[求助]if语句一直搞不明白
void convert(int n)
{int i;
if ((i=n/10)!=0)
convert(i);
putchar(n%10+'0');
}
如果 n=456 会输出什么结果呢?
我一直觉得putchar是只会输出4而已
搜索更多相关的解决方案:
语句
----------------解决方案--------------------------------------------------------
急需帮助,谢谢先
----------------解决方案--------------------------------------------------------
当然会输出456了,这里每调用一次函数就会执行一次输出
----------------解决方案--------------------------------------------------------
我也觉得是4 我去运行一哈看看
----------------解决方案--------------------------------------------------------
这就是一个递归,去看一下递归的运行吧,输出会是456
----------------解决方案--------------------------------------------------------
5和6也会输出 因为你的putchar()并没有因为if 而跳过 是必然要执行的一个语句
----------------解决方案--------------------------------------------------------
不懂老 真的是456 他怎么调有一次都要执行一次哦
----------------解决方案--------------------------------------------------------
convert(456)时 if((i=45)!=0) -->
convert(45) 时 if((i=4)!=0) --->
convert(4) 时 if((i=0)!=0) --->putchar(4%10+'0');相当于输出'4',
再返回到convert(45)的putchar(45%10+'0');相当于输出'5',
再返回到convert(456)的putchar(456%10+'0';相当于输出'6',然后就结束.
----------------解决方案--------------------------------------------------------
递归:
{
语句1;
调用函数------->{ 语句1;
调用函数------->{ 语句1;
递归终止;//
语句2;//返回函数调用处
}
语句2;//返回函数调用处;
}
语句2;
}
----------------解决方案--------------------------------------------------------
大悟,谢谢大家,嘿嘿
----------------解决方案--------------------------------------------------------