社区
C语言
帖子详情
递归反向输出字符串
忆年华
2015-03-21 06:23:06
#include <stdio.h>
print()
{
char a;
scanf("%c",&a);
if(a != '#') print();
if(a != '#') printf("%c",a); //这一块是怎样输出的
}
main()
{
print();
}
...全文
309
5
打赏
收藏
递归反向输出字符串
#include print() { char a; scanf("%c",&a); if(a != '#') print(); if(a != '#') printf("%c",a); //这一块是怎样输出的 } main() { print(); }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
赵4老师
2015-03-23
打赏
举报
回复
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门! 递归函数关注以下几个因素 ·退出条件 ·参数有哪些 ·返回值是什么 ·局部变量有哪些 ·全局变量有哪些 ·何时输出 ·会不会导致堆栈溢出
fly_dragon_fly
2015-03-23
打赏
举报
回复
一般是建议通过名字来理解这个函数的,不过显然这个名字过于简朴,那就直接用递归树来理解了,假设输入“123#” '1' ->print() '2' -> print() '3' -> print() '#' 从此返回 每个返回都要执行 if(a != '#') printf("%c",a); 从而完成逆序输出
cysccnu
2015-03-21
打赏
举报
回复
递归调用与一般调用的区别就在于此。 函数在调用另一个函数时,会开辟空间生成调用函数栈帧和被调用函数栈帧,调用函数会push保存寄存器如eax,edx,ecx,被调用函数也会push保存寄存器到栈中,比如edi,ebx,esi,ebp,esp,所有的中间值都保存在每一个调用所对应的栈帧中。在调用结束时pop恢复这些寄存器,同时返回到之前保存的调用函数地址,这样一步步逆着原来的顺序返回。 如果是一般的函数调用,就只需恢复寄存器然后执行ret指令返回;但是在递归调用时,除了要恢复寄存器,还要执行一些含有递归意义的指令,否则只是把中间的值保存,而没有利用, 这里 if(a != '#') printf("%c",a); 的作用就是把每个值打印出来。这一句就是你利用递归需要达成的目的。 举个栗子,如果是阶乘,比如5!,5,4,3,2,1这些值都保存在每次调用对应的栈帧中,在调用结束时每次返回除了恢复寄存器,还要计算i*(i-1)!,i = 2,3,4,5。
纵横车
2015-03-21
打赏
举报
回复
比如输入“abcd#”, 输入‘a’后先if(a != '#') print();继续递归接收下一个字符; 输入‘b’后继续if(a != '#') print();递归接收下一个; 输入‘c’继续递归 输入‘d’继续递归 输入‘#’后if(a != '#') print();if(a != '#') printf("%c",a); 均不被执行,函数结束,返回上一层递归 返回到输入‘d’的那一层,执行if(a != '#') printf("%c",a);输出‘d’,函数结束,返回上一层 返回到输入‘c’的那一层,执行if(a != '#') printf("%c",a);输出‘c’,返回上一层 ...
忆年华
2015-03-21
打赏
举报
回复
这个递归输入懂,到那时在输出的时候就不懂了,
【C】
递归
反向
输出字符串
本文介绍如何使用Visual Studio 2019和C++14标准,通过
递归
函数实现字符串的
反向
输出。具体步骤包括声明
递归
函数、读取字符并以相反顺序打印。
递归
实现字符串的
反向
输出
本文介绍了如何使用
递归
方法在C语言中实现字符串的
反向
输出。通过从字符串末尾开始
递归
,逐个字符输出,达到
反向
显示字符串的目的。这种方法展示了
递归
在处理字符串操作中的应用。
使用
递归
反向
输出一个字符串
本文介绍了一个简单的
递归
算法实现字符串的
反向
输出。通过逐步分解问题,
递归
地调用自身来达到反转目的,最后输出反转后的字符串。该程序采用C语言编写,展示了
递归
思想在实际编程中的应用。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章