社区
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();
}
...全文
278
5
打赏
收藏
递归反向输出字符串
#include print() { char a; scanf("%c",&a); if(a != '#') print(); if(a != '#') printf("%c",a); //这一块是怎样输出的 } main() { print(); }
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
这个递归输入懂,到那时在输出的时候就不懂了,
递归
实现字符串
反向
输出
- 当`m`大于1时,则先
输出字符串
末尾的字符(即`str[m - 1]`),然后
递归
调用自身,处理剩余的字符串(长度减1)。 5. **主函数实现**: ```c int main() { printf("Please input the string:\n"); gets(str);...
python字符串利用
递归
反向
打印
在python中输入字符串通过
递归
筛选等操作,将字符串
反向
打印
用
递归
的方式实现字符串和单链表的
反向
打印
本例程用
递归
的方法实现字符串和单链表的
反向
打印,对C/C++的初学者有极大的帮助。
C++
递归
函数
//
递归
函数,用于
输出字符串
的
反向
void reversePrint(const std::string &str, int index) { // 基本情况:当索引超出字符串长度时停止
递归
if (index >= str.length()) { return; } //
递归
情况:先调用...
【C】
递归
反向
输出字符串
递归
反向
输出字符串
利用
递归
函数调用方式, 将所输入的5个字符,以相反顺序打印出来。 //利用
递归
函数调用方式, //将所输入的5个字符,以相反顺序打印出来。 #include <stdio.h> int main() { printf...
C语言
70,020
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章