新手问题:斐波拉契数列,代码如下,但是有错,大神帮忙看看

quqian11 2018-01-11 09:05:12
package cn.itcast.homework;

public class Home {

public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(rabbit(12));
}

public static int rabbit(int month) {
int[] number = new int[month];

for (int i =0;i<month;i++) {

if(i ==0 & i ==1) {
number[i] = 1;

}else {
number[i] = number[i-1] + number[i-2];
}
}


return number[month-1];
}

}
...全文
343 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
quqian11 2018-01-12
  • 打赏
  • 举报
回复
谢谢大家了!
youyouke 2018-01-12
  • 打赏
  • 举报
回复
if语句中你使用的是&,这个条件表达式永远都是false,所以根本执行不到里面的语句,直接执行else中的语句,故数组角标越界,你应该将&更改为或运算符,最好是短路或(||)以实现在0和1元素时值都是1的目的,这样程序就调通了。
小码农的 2018-01-11
  • 打赏
  • 举报
回复
给你这段代码吧 简单易懂 public class Maio{ public static void main(String[] args) { int arr[] = new int[20]; arr[0] = arr[1] = 1; for (int i = 2; i < arr.length; i++) { arr[i] = arr[i - 1] + arr[i - 2]; } System.out.println("斐波那契数列的前20项如下所示:"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } }
bangcheng001 2018-01-11
  • 打赏
  • 举报
回复
运行后提示java.lang.ArrayIndexOutOfBoundsException,也就是数组下标越界,问题出现在逻辑运算符上,你的程序里写的是if(i ==0& i ==1),这个值必然为负,因为一个值不可能同时等于两个数,当i=0时就会跳到else语句中运行,然后看number[i] = number[i-1] + number[i-2];这一句,数组下标不能为负,但是这时出现了number[-1] ,越界,故提示错误,逻辑运算符上换成&&一样,也会提示出错,原因相同,正确的应该是用 ||,| 也可以。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧