社区
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();
}
...全文
272
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语言写的
递归
实现字符串
反向
输出。
python字符串利用
递归
反向
打印
在python中输入字符串通过
递归
筛选等操作,将字符串
反向
打印
用
递归
的方式实现字符串和单链表的
反向
打印
本例程用
递归
的方法实现字符串和单链表的
反向
打印,对C/C++的初学者有极大的帮助。
数据结构实验报告 栈、队列和矩阵.doc
一、实验目的和要求 熟悉线和队列设计,使用栈或队列解决算法设计问题,理解栈和队列的作用:掌握
递归
算法设计方法。栈和队列的设计和应用;
递归
算法设计。需要使用栈或队列的算法通常较复杂,理解对于什么应用问题需要使用栈或队列,以及怎样使用。 二、实验题目 ①用
递归
算法实现字符串的逆转操作 ②输出一个集合(n个元素)的所有子集 三、实验方法与步骤(需求分析、算法设计思路、流程图等) 用
递归
算法,将一个元素的子集进行重新
反向
排序,实现逆转字符串操作。 将每一个元素数的子集进行输出,再整体输出,以输出一个集合(n个元素)的所有子集。 四、实验原始纪录(源程序、数据结构等) import java.util.ArrayList; public class Test { public static String r
【C】
递归
反向
输出字符串
使用VS2019 ISO C++14 标准 (/std:c++14)
递归
反向
输出字符串
利用
递归
函数调用方式, 将所输入的5个字符,以相反顺序打印出来。 //利用
递归
函数调用方式, //将所输入的5个字符,以相反顺序打印出来。 #include <stdio.h> int main() { printf("请输入5个字符:\n"); //申明函数 void Reverse(int); int num = 5; //调用取反函数
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章