为了账号安全,请及时绑定邮箱和手机立即绑定

关于递归函数的理解问题 。

关于递归函数的理解问题 。

C C++
宝慕林1286320 2016-11-04 13:54:01
#include <stdio.h>void reverse(int n){    if((n/2) !=0)        reverse(n/2);    printf("%d",n%2);}int main(){    int i;    while(~scanf("%d",&i))    {        reverse(i);        putchar('\n');    }}递归函数如何运用请就这个代码详细讲解一下,if的作用以及何时起到作用的。请大神详细解析谢谢。
查看完整描述

1 回答

已采纳
?
赵小妖么么哒

TA贡献44条经验 获得超26个赞

给你个小建议:

你有没有谭浩强的c语言的书?红色的。

我建议你好好的看看那本书。

现在回答你的问题:

假设i=9

while循环第一次执行:

(1). reverse(9);

(2).进入 reverse(i);这个函数

(3).n=9

(4)执行if((n/2) !=0)

(5)最重要的一步也是核心一步:

执行reverse(n/2);

再次进入reverse(n);这个函数

注意此时没有执行printf("%d",n%2);

(6)一直重复执行(5)

直到(n/2) ==0

(7)当(n/2) ==0时,就执行 printf("%d",n%2);

(8)然后结束函数,然后执行while ,然后重复上面的步骤。

--------------------分割线----------------------------------

不知道,我讲清楚了么,觉得自己不适合做老师啊。\(^o^)/~

不懂再问我。

希望采纳。\(^o^)/~

还有,谢谢你的邀请。


查看完整回答
1 反对 回复 2016-11-04
  • 宝慕林1286320
    宝慕林1286320
    int reverse1(int n) { printf("%d",n%2); if((n/2) !=0) reverse1(n/2); } 那我这么写他是怎么运行的为什么就反序输出了,你讲的不错我获益匪浅。
  • 1 回答
  • 1 关注
  • 1128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信