程序设计典型算法之递归算法
临睡前,把递归算法也写完吧!
递归法基本思想: 在解决复杂问题的时候,为降低问题的复杂程度,一般将问题逐层分解,最后归结为一些简单的问题。逐层分解的过程实际上并没有对问题进行求解,只是解决最后简单的问题后,再沿原来分解的逆过程逐步进行综合。
下面来个简单的实战吧!
用递归法求n的阶乘: (1)n=0时,n!=1;
(2) n>0 时,n!=n*(n-1)!(注:写法略微有点丑,见谅见谅!)
递归一定要有一个终止条件,也就是设计递归出口,否则递归是毫无意义的。
上代码吧!
#include <stdio.h>
int main() {
int n;
int c = 1;
printf("请输入一个需要求其阶乘的整数n\n");
scanf("%d", &n);
if (n ==0) {
printf("n的阶乘为:\n%d", n);
}
else {
for (int i = 2; i <= n; i++) {
c = i * c;
}
printf("n的阶乘为:%d", c);
}
return 0;
}
实现结果:
到这里一个用递归算法做的计算阶乘程序就做好啦!