递归调用
递归调用
今天来学习算法中的递归调用,递归简单的说是自己调用自己。用生活中翻箱子的例子做比喻:
就是,
(1)创建一个要找的盒子堆
(2)从盒子堆中取出一个盒子
(3)如果,找到的是盒子,则继续找(调用函数)
(4)如果找到钥匙,则成功
在递归案例中,最重要的是基线条件和递归条件。递归条件是指函数自己调用自己,但是总要有停下来的时候,这个停下来的条件就是基线条件,在某种情况下,自己不再调用自己,从而避免形成无限循环。
递归函数中有两个特别有名的案例,一个是斐波那契数列,一个是递归求数组和。
首先斐波那契数列的代码是:
public static int fab(int i) { if(i==0||i==1) { return 0; } else { return fab(i-1)+fab(i-2); } }
斐波那契数列中,
递归条件是, i的值不等于0或1;
基线条件是, i的值等于0或1,结束;
另外一个是递归数组求和
import java.util.Arrays; public class Retirement { public static void main(String[] args) { int[] array = {3,1,2,5,6,12}; System.out.println(Sum(array)); } public static int Sum(int[] array) { if(array.length<=1) { return array[0]; } else { int newArray[]; newArray = Arrays.copyOfRange(array,1,array.length); return array[0]+Sum(newArray); } } }
在递归数组求和中,递归条件是array.length的长度大于1,只有这样数组才会继续循环;
而当array.length小于或等于1,这样才能在满足条件时终止循环。
相关推荐
steeven 2020-11-10
Tips 2020-10-14
nongfusanquan0 2020-08-18
清溪算法君老号 2020-06-27
清溪算法 2020-06-21
RememberMePlease 2020-06-17
nurvnurv 2020-06-05
SystemArchitect 2020-06-02
清溪算法 2020-05-27
清溪算法 2020-05-25
LczPtr 2020-05-25
举 2020-05-20
徐建岗网络管理 2020-05-10
steeven 2020-05-09
Tips 2020-05-03
猛禽的编程艺术 2020-05-01