当我们输入一串整数,希望依次打印其值(一次一位)譬如输入"12345",依次打印1,2,3,4,5。如何设计程序?
解决这个问题方法十分多样,我们这里采取“递归”思维进行设计
#include <stdio.h>
void PrintDigit(int n) {
printf("%d\n", n);
}
void PrintOut(int n) {
if (n >= 10) {
PrintOut(n / 10);
}
PrintDigit(n % 10);
}
int main() {
int number = 12345;
PrintOut(number);
return 0;
}
这里我们首先关注主函数定义了int类型的变量12345,并且将其传入了函数PrintOut。
在PrintOut函数中,我们利用了取模的方法来逐个获取字符。此时我们发现取模的方法有其局限性,我们只有对一个小于10的数取模,方可直接获取该数位上的数字。因此我们想到了办法:在PrintOut函数里面再调用一次PrintOut函数,直到该数字小于等于10,再进行取模。
我们将这种在A函数里面重复调用A函数的行为,称为函数的递归,这种递归思想在程序设计当中十分重要。