据说凡是可以循环的步骤,都可以递归表示出来。
递归的关键有二点:
1.0 递归公式,即递推式。
2.0 递归出口。
递归求数组的和
package day20180407;
public class Sumarry {
public static void main(String[] args) {
int[] arry= {1,2,3,4,5};
System.out.println("the sum of the arry="+sum(arry,arry.length-1));
}
static int sum(int[] arry,int n)
{
if(n==0)
{
return arry[0];
}
else
{
return sum(arry,n-1)+arry[n];
}
}
}
结果是
the sum of the arry=15
求数组的最大数
package day20180407;
public class Maxarry {
static int count=0;
public static void main(String[] args) {
int[] arry= {1,2,3,4,5,88,-85,1};
System.out.println("the max of the arry="+max(arry,arry.length-1));
System.out.println("count function="+count);
}
static int max(int[] arry,int n)
{
count++;
if(n==0)
{
return arry[0];
}
else
{
if(max(arry,n-1)>arry[n])
return max(arry,n-1);
else
return arry[n];
}
}
}
结果是:
the max of the arry=88
count function=27
可以看成这个函数,递归了20多次,你能理解其过程嘛,反正计算机可以。 我感觉递归就像一种哲学。
网友评论