黑马程序员技术交流社区
标题:
求帮忙解释一下这段代码最后几句的含义
[打印本页]
作者:
yaowenjiang
时间:
2011-11-11 09:21
标题:
求帮忙解释一下这段代码最后几句的含义
本帖最后由 yaowenjiang 于 2011-11-12 18:40 编辑
public class exp2
{
public static void main (String [] args)
{
int i=0;
for (int i=1;i<20;i++)
System.out.println(f(i));
}
public static int f(int(x))
{
if(x==1 || x==2) //
return 1; //
else
return f(x-1)+f(x-2); // 这里之前写成f(x-1)+f(x+2) 写错了
}
}
作者:
王新春
时间:
2011-11-11 19:13
public static int f(int(x))
{
if(x==1 || x==2) //这是一个条件控制语句,当x==1或者x==2时
return 1; //上面的x条件符合时,返回值1
else
return f(x-1)+f(x+2); //当x不符合x==1或者x==2时则执行f(x-1)+f(x+2)这个语句,并把运算结果返回
}
作者:
路新
时间:
2011-11-12 10:05
//原代码
public class exp2
{
public static void main (String [] args)
{
int i=0;//重复定义i的值 错误1
for (int i=1;i<20;i++)
System.out.println(f(i));
}
public static int
f(int(x))//方法定义的参数格式错误 f(int x) 错误2
{
if(x==1 || x==2) //
return 1; //没有缩进该行 缩进可增强代码的可读性
else
return f(x-1)+f(x+2); //这个递归是不可能算出值得 只能不断的循环
}
}
/*
f(1) = 1
f(2) = 1
f(3) = f(3-1) + f(3+2) = f(2)+f(5)=1+f(5)
f(4) = f(4-1) + f(4+2) = f(3)+f(6)=1+f(5)+f(6)
f(5) = f(5-1) + f(5+2) = f(4)+f(7)=1+f(5)+f(6)+f(7)
.......
f(n) = 1+f(5)+f(6)+f(7)+..+f(n+2)//n>5
QQ拼音截图未命名.png
(7.29 KB, 下载次数: 20)
下载附件
2011-11-12 10:04 上传
作者:
史晓霞
时间:
2011-11-12 10:20
这是递归,重复调用自己
作者:
张志东
时间:
2011-11-12 11:30
想起来高中的时候老师解这样的方程题f(x) = xxxx.....很像,
作者:
yaowenjiang
时间:
2011-11-12 18:38
这个循环结果是 1,1,2,3,5,8,13,21
前面当x=1或2 结果都是1 然后从3开始执行 f(3-1)+f(3-2) 那接着两个1 以后跟着应该是3了啊 可算出的结果怎么是2啊
作者:
张翼
时间:
2011-11-12 19:24
blic static int f(int(x))
{
if(x==1 || x==2) //这是一个条件控制语句,当x==1或者x==2时
return 1; //上面的x条件符合时,返回值1
else
return f(x-1)+f(x-2); //当x不符合x==1或者x==2时则执行f(x-1)+f(x+2)这个语句,并把运算结果返回
for循环执行十九次,每执行一次就调用一下f(),当x是一或者二的时候返回1,但是当X不是这两个数的时候就把X带入f(x-1)+f(x+2),就相当于再度调用f方法,因为无论参数多大,最后总会被减成一或者二,所以执行过程大致如此:
1,1
2,1
3,f(2)+f(1)=1+1=2
4,f(3)+f(2)=f(2)+f(1)+f(2)=1+1+1=3
5,................ 依次类推。
作者:
咖啡
时间:
2011-11-12 19:59
public static int f(int (x)){
if(x==1|| x==2) //当x等于1或者等于2的时候就返回1,否则就返回 return f(x-1)+f(x-2);
return 1;
else
return f(x-1)+f(x-2);
} 你应该把if语句的有关原理看一下。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2