递归函数:
自己调用自己,重复相同的事情
明确:
ABC
AAA
递归函数一定要有退出的条件!
案例:采用递归函数实现打印:1 2 3
分析:
void print(int max) {
//第三步:给递归函数编写退出条件
if(max == 1) {
printf("1 ");
return; //退出返回
}
//第二步:然后发现打印3和打印2和打印1是一样的,所以自己调用自己重复打印printf即可
//但是打印3之前打印2,打印2之前打印1
print(max-1);
//第一步.首先要明确递归函数所要做的重复性事件,对于这个案例,重复性的事件就是打印1个数字
printf("%d ", max);
}
int main(void) {
int max = 3;
print(max); //调用递归函数
printf("\n");
return 0;
}
#include <stdio.h>
//main
// print(int max=3)
// print(int max=2)
// print(int max=1)
// printf:打印1
// return
// printf:打印2
// return
// printf:打印3
// return
// printf:\n
// return
void print(int max) {
//第三步:给递归函数编写退出条件
if(max == 1) {
printf("1 ");
return; //退出返回
}
//第二步:然后发现打印3和打印2和打印1是一样的,所以自己调用自己重复打印printf即可
//但是打印3之前打印2,打印2之前打印1
print(max-1);
//第一步.首先要明确递归函数所要做的重复性事件,对于这个案例,重复性的事件就是打印1个数字
printf("%d ", max);
return;
}
int main(void) {
int max = 3;
print(max); //调用递归函数
printf("\n");
return 0;
}
思考:利用递归求数列第n项的值
1 1 2 3 5 8 .....
公式:f(n) = f(n-1) + f(n-2)
#include
int fee(int n) {
if(n < 3)
return 1;
return fee(n-1) + fee(n-2);
}
int main(void) {
int n = 6;
printf("%d\n", fee(n));
}
思考:利用递归求数列第n的阶乘
公式:n!=n*(n-1)!
#include
int fact(int n) {
if(n≤1)
return 1;
return n*fact(n-1);
}
int main(void) {
int n = 5;
printf("%d\n", fact(n));
return 0;
}