当我们输入一串整数,希望依次打印其值(一次一位)譬如输入"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函数的行为,称为函数的递归,这种递归思想在程序设计当中十分重要。