私はすべてのフィボナッチ数を出力するプログラムをプログラムしようとしています。しかし、私の数値は常にfib(2)から始まり、next()を使って次のフィボナッチ数を求めます。私の機能に無限ループが生じるのはなぜですか?
public class Fibonacci {
static int NextCounter = 2; // fib(2)
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Enter your number!");
try {
FibonacciPrint(System.in.read());
} catch (IOException e) {
e.printStackTrace();
}
}
public static void FibonacciPrint (int a){
for(int i = 0 ; i < a ; i++){
System.out.println(next()); // Will never stop?
}
}
private static int next() {
int result = fibo(NextCounter);
NextCounter += 1;
return result;
}
private static int fibo (int n){
if(n == 1 || n == 2)
{
return 1;
}
return fibo(n-1) + fibo (n-2);
}
}
私は、forループがaと等しいときに停止することを期待しています。あなたはすでに知っているように、それはしません。どうして ? next()とfibo()が正しく動作しています。助けてくれてありがとう。私は秒後に停止し、実行した後
結果:
Enter your number!
5 // Input
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
832040
1346269
2178309
3524578
5702887
9227465
14930352
24157817
39088169
63245986
102334155
まず最初に、あなたのコードは** catch **(IOException e){} 'を持つべきではありません。目を閉じて車を運転しますか? –
何か印刷しますか? 'a'の価値は何ですか?あなたはそれを踏み出そうとしましたか? – Blorgbeard
@Blorgbeardはい、すべてのフィボナッチ数を取得します。 Aはユーザー入力でなければなりません。 – urson88en