Tamam Her Fibonacci numarasını verecek bir program programlamaya çalışıyorum. Ancak sayılarım her zaman fib ile başlayacaktır (2) ve sonraki Fibonacci numarasını almak için sonraki() kullanacağım.Neden işlevimde sonsuz bir döngü olsun?
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);
}
}
Bu nedenle, for döngüsünün bir a eşit olacağı zaman duracağını umuyorum. Bildiğiniz gibi belki de olmaz. Niye ya ? sonraki() ve fibo() doğru çalışıyor. Yardım ettiğiniz için teşekkür ederim. Bir saniye sonra durdu bir koşudan sonra
Sonuçlar:
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
Her şeyden önce, kodunuz ** asla ** olmalıdır: 'catch (IOException e) {}' - boş catch blokları, ** hiç **. Arabanı gözlerin kapalıyken mi sürüyorsun? –
Herhangi bir şey yazdırıyor mu? A'nın değeri nedir? Bunu denemeyi denediniz mi? – Blorgbeard
@Blorgbeard Evet, her Fibonacci numarasını alacağım. A kullanıcı girişi olmalıdır. – urson88en