永发信息网

C语言 递归 整数转字符串 原理

答案:1  悬赏:0  手机版
解决时间 2021-03-10 07:04
#include
void convert(int n)
{
int i;
if((i=n/10)!=0)
convert(i);
putchar(n%10+'0');
}

void main()
{
int number;
printf("Input an integer:");
scanf("%d",&number);
printf("Output:");

if(number<0)
{putchar('-');
number=-number;
}
convert(number);
printf("\n");
}

书上说 是和 压栈出栈有关系,希望大虾详细讲解下 ,谢谢
最佳答案
比如你输入的number是1234
main()中调用convert(number);进入了转换函数。
void convert(int n)
{
int i;
if((i=n/10)!=0) //i=n/10,i不得0时,递归调用convert(i); 意思是当n不是一位数时,会递归
convert(i);
putchar(n%10+'0');
}
1.第一次进入convert( int n)函数时,n=1234 , i=n/10=123 非0,因此递归调用convert(123); 这时的n=1234会被压入栈。
2.运算convert(123)时, n=123 , i=n/10=12非0,因此递归调用convert(12); 这时的n=123会被压入栈。
3.运算convert(12)时, n=12 , i=n/10=1非0,因此递归调用convert(1); 这时的n=12会被压入栈。
4.运算convert(1)时, n=1 , i=n/10=0,因此,输出putchar(n%10+'0'); 1(字符1)。函数返回。
5.n=12出栈,输出putchar(n%10+'0'); 2(字符2)。函数返回。
6.n=123出栈,输出putchar(n%10+'0'); 3(字符3)。函数返回。
7.n=1234出栈,输出putchar(n%10+'0'); 4(字符4)。函数返回。
栈空,函数返回到主函数。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
辨别机油是不是正品有哪些方法。
There are some dried
澳洲买雅诗兰黛便宜吗
急!!!!"你应该多吃蔬菜少吃肉"用英语怎么翻译
电脑重装了系统,里面保存的东西还在吗
如何使移动4g手机也能用联通4g卡
数十次是多少次
一首慢歌,女生唱的,歌词里有你是晴天几个字
沈岱线这个地址在什么地方,我要处理点事
下列选项中属于民法调整的法律关系的有()。
蹇这个字怎么读
友勃朗商城工资怎么样
和女朋友去什么地方比较浪漫又有情调?
恩施硒后生物科技公司怎样?
江西经济管理职业学院(就是江西经济管理干部
推荐资讯
康洋黑金电池和天能那个好???
因为甲*4分之3=乙*6分之5所以甲比乙=( )
合肥香樟大道危险品车能走吗
把光圈调到f8以下是F5.6还是F9?单反焦距50mm
大王口村在哪里啊,我有事要去这个地方
创维42k03hr背光不亮
求穿越到陆小凤的原创人物的耽美文,CP只要玉
想买个太阳镜,在哪个网站买比较好
沙子营村在哪里啊,我有事要去这个地方
闺蜜生日祝福语创意搞笑十五字
下列京剧角色四大行当哪种又称小花脸?()
最终幻想5沃尔斯城神兽在哪里 攻略说是在地下
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?