函数递归
#include <stdio.h>void printdigits( int n );
int main()
{
int n;
scanf("%d", &n);
printdigits(n);
return 0;
}
void printdigits( int n )
{if(n<10)printf("%d\n",n);
else {printdigits(n/10);
printf("%d\n",n%10);
}
}
不太理解阿,谁可以给我讲一讲函数过程如何运算的 本帖最后由 jackz007 于 2021-11-7 00:17 编辑
代码改造一下,更容易说明问题
#include <stdio.h>
void printdigits(int n )
{
if(n) {
printdigits(n / 10) ;
printf("%d\n" , n % 10) ;
}
}
int main()
{
int n;
scanf("%d", &n);
printdigits(n) ;
return 0;
}
现在以 n = 123456 为例来看看 printdigits() 函数的递归过程
printdigits(123456)
printdigits(12345)
printtdigits(1234)
printtdigits(123)
printtdigits(12)
printtdigits(1)
printtdigits(0)-- n = 0 ,递归到达底部
printf(1 % 10) --> 1
printf(12 % 10) --> 2
printf(123 % 10) --> 3
printf(1234 % 10) --> 4
printf(12345 % 10) --> 5
printf(12346 % 10) --> 6
从改过的代码可以看出,在 n > 0 情况下,将一直递归,每次递归的新 n 是 n / 10,这样递归到第 6 次的时候,n 为 0 值,这时,递归到达底部,开始返回,在逐级返回的过程中,每一级均打印本级的 n % 10,一共打印 6 个数,于是,就看到了依次打印输出的 1、2、3、4、5、6。
页:
[1]