C语言讲义——函数递归

  • 函数直接或间接调用自身
  • 每次调用必须获得一些进展,进一步靠近目标
  • 达到目标就不再调用自身
  • 阅读递归函数不要纠缠于执行过程,而是相信递归函数会顺利完成任务

例:阶乘

0! =1(0 的阶乘定为1)
1! =1
2! =2*1=2
3! =3*2*1=6
n! = n × (n-1) ×…× 2 × 1

0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800

不用递归

main() {
	int ret;
	int i,j;
	for(i=0; i<=10; i++) {
		ret = 1;
		for(j = i; j>1; j--) {
			ret = ret *j;
		}
		printf("%d! = %d\n",i, ret);
	}
}

使用递归

#include <stdio.h>
int factorial(int n) {
	if(n == 0) {
		return 1;
	}
	int ret = n*factorial(n-1);
	return ret;
}
main() {
	int i;
	for(i = 0; i<=10; i++) {

		int ret = factorial(i);
		printf("%d! = %d\n",i, ret);
	}
}

练习:斐波那契数列

posted @ 2019-07-15 21:04  虎老狮  阅读(703)  评论(0编辑  收藏  举报