递归调用
Posted zhichun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归调用相关的知识,希望对你有一定的参考价值。
递归调用
今天来学习算法中的递归调用,递归简单的说是自己调用自己。用生活中翻箱子的例子做比喻:
就是,
(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,这样才能在满足条件时终止循环。
以上是关于递归调用的主要内容,如果未能解决你的问题,请参考以下文章