递归函数
- 定义:在函数内部再次调用自己、
- 递归函数要有初始条件和递归公式
- 例
#include <stdio.h>
int f(int n)
{
if (n == 1)//初始条件,没有则会陷入死循环
{
return 1;
}
else
{
return f(n - 1) + n;//递归公式
}
}
int main()
{
printf("%d\n", f(100));
return 0;
}
#include <stdio.h>
int f(int n)
{
if (n == 0)
{
return 1;
}
else
{
return n*f(n-1);
}
}
int main()
{
printf("%d\n", f(5));
return 0;
}
- 缺点:重复计算,调用栈溢出
#include <stdio.h>
void f(int n)
{
if (n == 0){
return;
}
else{
f(n / 10);
printf("%d\n", n % 10);
}
}
int main()
{
f(12345);
return 0;
}
汉罗塔
#include<stdio.h>
void f(int n, char start, char end, char temp){
if(n==1){
printf("%c --> %c\n", start, end);
}else{
f(n-1, start, temp, end);
printf("%c --> %c\n", start, end);
f(n-1, temp, end, start);
}
}
int main(){
int n;
scanf("%d", &n);
f(n, 'A', 'B', 'C');
}