还不会递归算法?看完这个就会了!

递归算法是编程中一个比较重要的算法,相信很多刚接触的小白在刚开始学习递归的时候会感觉很难,递归算法确实比较绕,需要灵活运用,下面就来一一介绍!

什么是递归算法

递归算法,我自我感觉和循环是比较像的,但还是有很大差距的,递归就是一直调用自己,比较简单。
在这里插入图片描述
如图这就是递归的主要执行顺序,这里最主要的就是把握好什么时候退出!!!

递归主要考虑什么

  1. 当往上抛时返回什么
  2. 每一层执行什么样的操作
  3. 什么时候后退出。退出条件是啥
    然后拿题直接套这个模板就可以了

例题

1.1
从键盘中输入一个正整数,求这个数的阶乘
分析:
例如输入的数为5,最后输出的结果应该为54321

  1. 当往上抛时返回什么:首先知道刚开始的数为n,然后下一个是啥,不知道,然后往上抛呗,n * f(n-1) ;f(n-1)就相当于4
  2. 每一层执行什么样的操作:这个应该很好理解,一直乘呗
  3. 什么时候后退出。退出条件是啥:当n==1的时候就退出呗
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        int n=scan.nextInt();
        System.out.println(fun(n));
    }
    public static int fun(int n){
        int c;
        if(n==1){      //退出条件
            c=1;
            return c;
        }else{
            c=n*fun(n-1);   //执行啥
            return c;
        }

    }
}

这个就是递归比较基础的一个题,是不是很好理解,写起来也比较简单,刚开始可能不是很习惯用这个,多用就好了
1.2
再来一个比较经典的题目,Fibonacci sequence,这个应该都不陌生
**分析:**Fibonacci sequence有一个特点,第一个数和第二个数都是1,然后以后每一个数等于前两个数之和

  1. 当往上抛时返回什么:假如要求第5个数是啥,等于第四个数+第三个数;往上抛就完事了,遇到最上边
  2. 每一层执行什么样的操作:f(n-1)+f(n-2)呗
  3. 什么时候后退出。退出条件是啥,这个数列告诉了,第一个数和第二个数是确定的了1 1,这不就有条件了if(n1||n2){return 1;}
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        int n=scan.nextInt();          //输入前多少个数
        for(int i=1;i<=n;i++){         //
            System.out.println(fun(i));
        }
    }
    public static int fun(int n){
      if(n==1||n==2){        //退出条件
          return 1;
      }else{
          return fun(n-1)+fun(n-2);
      }

    }
}

看完这两个例题是不是感觉递归很简单了!!!!
消除恐惧最好的办法就是面对恐惧!!!!!!多练练就好了

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值