当前位置: 代码迷 >> C语言 >> [求助]if语句一直搞不明白
  详细解决方案

[求助]if语句一直搞不明白

热度:124   发布时间:2007-04-17 15:50:29.0
[求助]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;
}


----------------解决方案--------------------------------------------------------

大悟,谢谢大家,嘿嘿


----------------解决方案--------------------------------------------------------
  相关解决方案