黑马程序员技术交流社区
标题:
一个关于递归转为非递归的问题
[打印本页]
作者:
陈从宾
时间:
2012-3-21 18:53
标题:
一个关于递归转为非递归的问题
张教授采用基因干预技术成功培养出一头母牛,三年后,这头母牛每年会生出1头母牛, 生出来的母牛三年后,又可以每年生出一头母牛。如此循环下去,请问张教授n年后有多少头母牛?
public static class Cow
{
private int age;
public Cow afterYear()
{
age++;
return age > 2 ? new Cow() : null;
}
public static void showTotalCowNum(int n)
{
List<Cow> list = new ArrayList<Cow>();
list.add(new Cow());
for (int i = 0; i < n; i++)
{
int cowCount = list.size();
for (int j = 0; j < cowCount; j++)
{
Cow cow = list.get(j).afterYear();
if (cow != null)
{
cow.afterYear();
list.add(cow);
}
}
}
System.out.println(n + "年后,共有:" + list.size());
}
}
如何将这里的递归算法改为非递归的呐???
作者:
陈汉帆
时间:
2012-3-21 19:48
public class CowNumber {
public static void main(String[] args) {
System.out.println("第1年的牛数: 1");
System.out.println("第2年的牛数: 1");
int f1 = 1, f2 = 1, f, Y=100;
for(int i=3; i<=Y; i++) {
f = f2;
f2 = f1 + f2;
f1 = f;
System.out.println("第" + i +"年的牛数: "+f2);
}
}
}
复制代码
作者:
杨波
时间:
2012-3-21 21:57
看了好一会也没看到哪里有递归。lz这个算法经典啊,比我的要精简很多,看到
public Cow afterYear()
{
age++;
return age > 2 ? new Cow() : null;
}
复制代码
禁不住赞一个。
作者:
chujitao1
时间:
2012-3-21 22:10
{:soso_e163:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2