尝试编写一个打印Fibonacci序列的简单程序。我想创建一个名为fibNumber的方法来计算Fibonacci序列的值,然后我想在run()方法中使用for循环来打印该值15次。我遇到的麻烦是for循环中的println方法。 Eclipse说“n无法解析为值”和“我无法解析为某个值”。我认为我在声明变量方面覆盖了所有基础。我错过了什么吗?
我想写的是F15的所有内容
F0 = 0
F1 = 1
F2 = 1
F3 = 2
F4 = 3
F5 = 5
import acm.program.*;
public class FiccononicSequence extends ConsoleProgram {
public void run(){
println("This program prints out the Fibonacci sequence.");
for (i = 1; i <= 15; i++){
println("F" + i + " = " + fibNumber(n));
}
}
private int fibNumber(int n){
if (n == 0){
return 0;
}else{ if (n == 1){
return 1;
}else{
return fibNumber(n - 1) + fibNumber(n - 2);
}
答案 0 :(得分:2)
试试这个......
- 此处的问题与变量的scope
有关。
- i
应声明为int
类型,本地指向run()
方法而不是< / strong> n
,n
是fibNumber()
方法中的另一个局部变量。
- i
和n
完全处于不同的范围,彼此不可见。
for (int i = 1; i <= 15; i++){
println("F" + i + " = " + fibNumber(i)); // i should be here.
}
答案 1 :(得分:0)
什么是“n”?您可能应该使用“i”而不是“n”。
答案 2 :(得分:0)
问题在于如何调用fibnumber
方法,因为n
方法上下文中的run
变量未声明:
for (int i = 1; i <= 15; i++){
println("F" + i + " = " + fibNumber(n)); //what's n?
}
要修复它,只需发送i
变量:
for (int i = 1; i <= 15; i++){
println("F" + i + " = " + fibNumber(i)); //now it compiles!
}
答案 3 :(得分:0)
您需要在for循环中定义i
并将其传递给fibNumber
for (int i = 1; i <= 15; i++){<-- Define i
println("F" + i + " = " + fibNumber(i));<-- pass `i `
}