老师让算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里是如何运行的.
各位大侠麻烦给解释解释~
解决方案 »
- POI里面有方法给word加密码吗?
- 在main函数里传进来一个String,往第二个类里传那个赋值于一个String变量,在第三个类里头再使用那个String变量。怎么写?
- java程序实现大数的四则运算(不能用API)
- 菜鸟问题,输出随机数,在线等
- Java连接sybase数据库失败
- ArrayList转换为二维数组有问题,请指点
- 菜鸟曾提过的一个无一人回答的问题,急!大家来帮帮忙吧!(在线等)
- 大家都来看看,写文件时,如果数据量非常大,怎样在占用固定内存下高效的进行写操作。
- 告诉我几个能下载java源码的网站
- 如何在application程序中播放声音剪辑?
- 父类构造方法没有运行竟然就加载完了?
- 随机数
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);
} 递归调用怎么说呢,不知道你学过数学上的归纳法没有,和那有点像,如果你弄懂那了,这自然也不在话下了
转不出来了。