鱼C论坛

 找回密码
 立即注册
查看: 101|回复: 15

求助程序解析~

[复制链接]
发表于 6 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

void fun(int x)
{
        if(x/2>1)
        fun(x/2);
        printf("%d",x);
}

main()
{
        fun(7);
        printf("\n");
}

如上程序,能否说下程序的运行步骤,然后得到结果~~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 6 天前 | 显示全部楼层
FishC 发表于 2025-11-1 23:17
以下是您提供的C语言程序的解析。我将使用BBCode格式来回复,确保内容简洁易懂。

一直到打印数字3我都可以看懂,为啥后面要返回至fun(7)呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
FishC 发表于 2025-11-1 23:20
您的问题是关于递归函数执行后为什么返回到 `fun(7)`。让我用简单的步骤解释递归的返回过程。

首先 ...

1.我还是不太懂为什么fun(3)完成后,控制权返回到调用它的地方;
2.还有就是fun(7)后面的语句不应该是printf("\n")嘛,怎么变成printf("%d",x)了;
就是以上两个方面我还是不懂,能解答一下吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
FishC 发表于 2025-11-2 08:19
您好!我来详细解释您提出的两个问题,确保您能完全理解。我会用简单的步骤和例子来说明。

首先,回 ...

厉害厉害,我比刚才对于递归调用要明白不少了~~~
感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
但求过程001 发表于 2025-11-2 08:25
厉害厉害,我比刚才对于递归调用要明白不少了~~~
感谢

这样一来,关于递归的类似例题我可能都会明白一些了~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
本帖最后由 但求过程001 于 2025-11-2 08:34 编辑

#include <stdio.h>
void covert(char ch)
{
        if(ch<'D')convert(ch+1);
        printf("%c",ch);
}
main()
{
        convert('A');
        printf("%\n");
}

这题我又不懂了。。。按照递归思路,if语句到ch=D时条件为假,输出'D',然后回到convert'A',答案是DCBA,那'C'和'B'是怎么来的?还有main()函数里面最后一条语句是不是写错了,printf("%\n");是什么意思?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
FishC 发表于 2025-11-2 08:31
您好!我注意到您提供的代码片段不完整,只有 `if(ch`,没有具体的条件和函数体。因此,我无法直接解析 ...

刚才没写完,应该是上面的一个程序~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
FishC 发表于 2025-11-2 08:35
您说得对,我注意到您之前提供的代码确实不完整。让我基于您之前讨论的递归函数,提供一个完整的解析。 ...

#include <stdio.h>
void covert(char ch)
{
        if(ch<'D')convert(ch+1);
        printf("%c",ch);
}
main()
{
        convert('A');
        printf("%\n");
}

这题我又不懂了。。。按照递归思路,if语句到ch=D时条件为假,输出'D',然后回到convert'A',答案是DCBA,那'C'和'B'是怎么来的?还有main()函数里面最后一条语句是不是写错了,printf("%\n");是什么意思?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-7 03:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表