c语言15

45 阅读1分钟

递归函数

  1. 定义:在函数内部再次调用自己、
  2. 递归函数要有初始条件和递归公式
#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;
}
  1. 缺点:重复计算,调用栈溢出
#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');
}