找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1225|回复: 3
打印 上一主题 下一主题
收起左侧

请教C语言中关于递归函数的理解问题

[复制链接]
跳转到指定楼层
楼主
ID:338940 发表于 2019-3-22 22:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
怎么理解这个C语言递归函数呢?为什么它的功能是逆序输出P指向的字符串呢?还有putchar()函数在递调用自身语句之前或者之后,这有什么区别吗?


程序如下:
#include <stdio.h>
int fun (char*p)
{
if(*p==0)
return 0;
fun(p+1);
putchar(*p);
return 0;

}
main()
{
char ch[]="ABCD";
fun(ch);

}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:494218 发表于 2019-3-23 20:17 | 只看该作者
因为它所指向的地址+1,先输出的A往后面排,然后B排前面
回复

使用道具 举报

板凳
ID:397617 发表于 2019-3-23 21:05 | 只看该作者
如果putchar()函数在递归调用自身语句之前执行,那会输出ABCD
如果putchar()函数在递归调用自身语句之后执行,那会输出DCBA
回复

使用道具 举报

地板
ID:398677 发表于 2019-3-24 09:04 来自手机 | 只看该作者
同意板凳,输出在递归调用之前是顺序打印,,输出在递归调用之后就是逆序打印,返回的时候打印。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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