老师让算5的阶乘的值,我用的方法比较笨,FOR循环的算法.
老师给了个新算法,可是我有点蒙了,看不懂代码.我给大家把程序贴上.package zy;
public class jiayou{
public int t (int a){
if(a==1){return 1;}
return a*t(a-1);
}
public static void main(String[]args){
jiayou a = new jiayou();
int c = a.t(5);
System.out.println(c);
}
}老师说这叫方法调自己,我看不懂 return a*t(a-1) 在方法t里是如何运行的.
各位大侠麻烦给解释解释~
老师给了个新算法,可是我有点蒙了,看不懂代码.我给大家把程序贴上.package zy;
public class jiayou{
public int t (int a){
if(a==1){return 1;}
return a*t(a-1);
}
public static void main(String[]args){
jiayou a = new jiayou();
int c = a.t(5);
System.out.println(c);
}
}老师说这叫方法调自己,我看不懂 return a*t(a-1) 在方法t里是如何运行的.
各位大侠麻烦给解释解释~
public int t (int a){
if(a==1){
return 1;//当a=1的时候,返回1,也就是1的阶乘是1;其实还是漏了1的阶乘,0的阶乘也是1
}
return a*t(a-1);//如果a是大于1的,比如2,那么返回2*t(1),也就是2*1!
//这个算法是根据阶乘的定义来的
}
if(i==0) {
return 0;
}
return fabonacci(i-1)+fabonacci(i);
}递归调用怎么说呢,不知道你学过数学上的归纳法没有,和那有点像,如果你弄懂那了,这自然也不在话下了
我也是的 呵呵
那个递归:
1.自己调用自己 2.问题想着简化的方向
比如 计算5!
5!就等于5*(5-1)!也等于5*4!也等于5*t(4);最后的t(4),不就又调用了t()函数了嘛?
那么其中的t(4)也就等于4*(4-1)!也等于4*3!也等于4*t(3);
后面依次类推;知道t(1)的时候,再把return 1的数值在一层一层返回上去,直到t(5);在return a*t(a-1)的时候,t(a-1)不就是又调用了t()函数了嘛,这个就是递归.
if(i==0) {
return 0;
}
return fabonacci(i-1)+fabonacci(i);
} 递归调用怎么说呢,不知道你学过数学上的归纳法没有,和那有点像,如果你弄懂那了,这自然也不在话下了
转不出来了。