本帖最后由 黄兴旺 于 2013-8-26 18:56 编辑
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?/* 1.程序分析: 兔子的规律为数列1 2 3 4 5 6 7 月2,2,4,6,10,16,26 个数 从第3个月开始前两个月之和等于本月的总数*///(输入月份,然后求出兔子数)
package booktest;
import java.io.InputStreamReader;
import java.io.BufferedReader;
public class Number11{
public long getsumrabbit(long month){
long l1=1,l2=2;
long k,n=2;
if(month==1)
return 2;
if(month==2)
return 2;
else{
search :
for(k=3;k<=month;k++)
{
l1=l1+l2;
n++;
if(n==month){
return l2;
break search;
}
l2=l1+l2;
n++;
if(n==month){
return l1;
break search;
}
}
}
}/*这里说我没有返回值 但我有啊返回L1和L2而且都是long类型的,我的另一个程序也出现了这样的问题,就在for循环底下加个IF的判断然后在加个返回的值,就说我没有返回的值!而且说break search;代码不可达.郁闷为什么这里不可以呢 ?*/
public static void main(String[] args) throws Exception{
System.out.println("请输入你想知道的月份");
BufferedReader month1 =new BufferedReader(new InputStreamReader(System.in));
String monthsum=month1.readLine();
long month=Integer.parseInt(monthsum); //当前String对象转成int
Number11 ss=new Number11();
System.out.println("这个月的兔子总共有:"+ss.getsumrabbit(month)+"只");
运行结果再用计算算过来老是不对啊,代码没问题啊?????
|