7.1 .二叉树之递归

递归函数:

自己调用自己,重复相同的事情

明确:

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值