[英]Printing a particular value from an array
如何為任何特定索引打印斐波那契函數的值,比如n,其中n是提供的參數值?
1 import java.util.Arrays;
2
3 public class Fibonacci {
4
5 public static void main(String[] args) {
6 int n = Integer.parseInt(args[0]);
7 if(n<3){
8 return;
9 }else{
10 int[] f = new int[n];
11 f[0] = 1;
12 f[1] = 1;
13 int i= 0;
14 for(i=2; i<f.length; i++){
15 f[i]= f[i-1]+ f[i-2];
16 }
17 System.out.println(f[i]);
18 }
19
20 }
21
22 }
我相信你遇到的問題是System.out.println(f[i]);
在這個位置, i
將等於f[]
長度。 如果您使用i
作為索引,它將超出范圍。
如果要打印最后一個值,則應為System.out.println(f[i-1]);
您正在打印f[i]
,它將為您提供ArrayIndexOutOfBoundsException
因為此時i
值越過數組f
的邊界。
一個簡單的解決方法是通過采用這樣的單獨變量來打印數組:
int n = Integer.parseInt(args[0]);
if(n<3){
return;
}else{
int[] f = new int[n];
f[0] = 1;
f[1] = 1;
int i= 0;
for(i=2; i<f.length; i++){
f[i]= f[i-1]+ f[i-2];
}
for (int j=0;j<n;j++){
System.out.println(f[j]);
}
}
如果要打印任何特定索引,則可以在打印前進行一次邊界檢查:
int index=5;
if(index<f.length){
System.out.println(f[index]);
}
你的代碼基本上沒問題,但我在回復中調整了一些內容:
public static void main(String[] args) {
int n = Integer.parseInt(args[0]);
if (n < 0) {
System.out.println("Cannot computer Fib() of a negative number.");
return(0);
} else if (n < 3) {
System.out.println("Fib[" + n + "] = 1");
} else {
int[] f = new int[n];
f[0] = 1;
f[1] = 1;
for(int i=2; i < f.length; ++i) {
f[i] = f[i-1]+ f[i-2];
}
System.out.println("Fib[" + n + "] = " + f[n - 1]);
}
}
我認為以遞歸的方式使Fibonachi更好:
public int fib(int n) {
if (n < 2) {
return n;
}
else {
return fib(n-1)+fib(n-2);
}
System.out.println(n);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.