猿问

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

#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的作用以及何时起到作用的。请大神详细解析谢谢。

宝慕林1286320
浏览 1129回答 1
1回答

赵小妖么么哒

给你个小建议:你有没有谭浩强的c语言的书?红色的。我建议你好好的看看那本书。现在回答你的问题:假设i=9while循环第一次执行:(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^)/~还有,谢谢你的邀请。
随时随地看视频慕课网APP
我要回答