递归的举例
举例1: 求n的阶乘
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积, 并且0的阶乘为1.
自然数n的阶乘写作n!...scanf("%d", &n);
int result = Fact(n);
printf("%d\n", result);
return 0;
}
运行结果:
画图推演:
举例2: 顺序打印一个整数的每一位...题目: 输入一个整数m, 按照顺序打印整数的每一位
比如:
输入:1234 输出:1 2 3 4
输入:520 输出:5 2 0
分析和代码
这个题目, 放在我们面前, 首先想到的是, 怎么得到这个数的每一位呢...如果n是一位的话, n的每一位就是n自己
n如果超过1位的话, 就拆分每一位
1234%10就能得到4, 然后1234/123, 这就相当于去掉了4, 以此类推, 不断的%10和/10的操作, 直到1234...其实递归程序会不断的展开,在展开的过程中,我们很容易就能发现,在递归的过程中会有重复计
算,⽽且递归层次越深,冗余计算就会越多。