永发信息网

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

答案:1  悬赏:0  手机版
解决时间 2021-03-10 07:04
  • 提问者网友:富士山上尢
  • 2021-03-09 22:47
#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");
}

书上说 是和 压栈出栈有关系,希望大虾详细讲解下 ,谢谢
最佳答案
  • 五星知识达人网友:山有枢
  • 2021-03-09 22:57
比如你输入的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)。函数返回。
栈空,函数返回到主函数。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯