-
递归:程序调用自身的编程技巧称为递归
-
递归程序的特点
(1) 一定都有递归结束条件
(2) 每次结束一次递归的时候,都会向这个结果靠拢 -
递归的使用条件
在遇到不允许使用循环/不允许创建临时变量时,大多数条件下会用到递归 -
递归应用举例
(1)接受一个整型值(无符号),按照顺序打印它的每一位。 例如: 输入:1234,输出 1 2 3 4.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void traverse(int n) {
if (n > 9)
traverse(n / 10);//在n大于9时,调用自身,使n不断接近这个条件
printf("%d ", n % 10);//打印遍历出的数字
}
int main() {
int i = 0;
scanf("%d", &i);
traverse(i);
return 0;
}
(2)用递归写求斐波那契数列
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int Fibonacci(int n) {
if (n == 1)
return 1;
if (n == 2)
return 1;
return Fibonacci(n - 1) + Fibonacci(n - 2);
//利用公式,不断调用自身完成递归
}
int main() {
int i = 0;
scanf("%d", &i);
printf("%d", Fibonacci(i));
return 0;
}
本题利用递归,虽然代码简便,但不建议此种写法,因为此方法运行时会中间变量在不断重复运算,导致程序运行速度缓慢,数列较大时可能引起结果不能得到等问题,这种题目在非必要的情况下,建议采用非递归方式为解答