非递归方法解决递归问题帖子中给的代码的疑问。
关于非递归方法解决递归问题请用非递归方式解决以下递归问题:
f(1)=1;
f(2)=1;
f(n)=f(n-1)+f(n-2);
版主给出的代码
import java.util.Scanner;
public class fibonacci {
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
int max=scan.nextInt();
int[] a=new int[max];
a[0]=1;
a[1]=1;
System.out.print(a[0]+" "+a[1]+" ");
for(int n=2;n<max;n++){
a[n]=a[n-1]+a[n-2];
System.out.print(a[n]+" ");
}
}
}
for循环中
应该求不出a[max]的值吧,按照代码是求不出,就拿max=5来说,
在循环中n=4时满足
n=5时就跳出循环了,就不会显示a[5]的值5了
不过我在运行的时候结果却显示了5
不懂为什么会算出a[5]的值,
还有,我改了一下代码,将for循环中改成a<=max,运行就会出现