java递归,问题。请问这2个方法什么意思,我怎么就不明白递归的原理,求过程
展开全部
递归调用就是依次改变参数值,重复调用自身,当满足某个条件的时候开始逐层返回,直到最后返回结果。
递归调用在解决很多项的 有规律的数值的加减乘除法是很好的一种方法,因为它的代码量很小,然后能实现比较复杂的计算,被很多人所喜欢。
你的程序里面的:
public static int getSum(int n){
if(n==1) return 1;
return n + getSum(n-1);
}
这一段程序就是一个递归调用的程序,其功能是实现从1到n的连加运算。其计算过程是:
假如主函数里调用getSum时的参数为50,(计算1到50的连加)
第一次:50 与 getSum(49)的结果之和作为返回值;
然后先计算getSum(49),其计算过程是:49加 getSum(48)的结果作为返回值,
依次往下推,直到getSum(2)的时候,里面返回2+getSum(1);
而getSum(1)的时候直接返回1;
然后程序开始逐层返回,最后结果就是:50+49+48+...+3+2+1;
递归调用在解决很多项的 有规律的数值的加减乘除法是很好的一种方法,因为它的代码量很小,然后能实现比较复杂的计算,被很多人所喜欢。
你的程序里面的:
public static int getSum(int n){
if(n==1) return 1;
return n + getSum(n-1);
}
这一段程序就是一个递归调用的程序,其功能是实现从1到n的连加运算。其计算过程是:
假如主函数里调用getSum时的参数为50,(计算1到50的连加)
第一次:50 与 getSum(49)的结果之和作为返回值;
然后先计算getSum(49),其计算过程是:49加 getSum(48)的结果作为返回值,
依次往下推,直到getSum(2)的时候,里面返回2+getSum(1);
而getSum(1)的时候直接返回1;
然后程序开始逐层返回,最后结果就是:50+49+48+...+3+2+1;
更多追问追答
追问
能给我解释下,我代码里面的 那里面n==1 return 1是什么意思
追答
这个是终止条件,就是说你的n的值肯定是要从一个较大的数开始逐渐往下走的,当n的值走到1就说明已经走到最后了,不要往下走了,可以开始返回了。
展开全部
很简单呀。getSum(n) 返回的是 n+n-1+n-2+...+1;
AAA(sum) 这个就是一个简单方法,没有递归。
AAA(sum) 这个就是一个简单方法,没有递归。
追问
那里面n==1 return 1是什么意思
追答
就是递归的退出条件。
比如数学中的 函数是这样表述的
{ 1 n=1;
f(n)={
{ f(n-1)+n n>1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询