循环变量的Java Fibonacci
这是一个程序,它接受一个命令行变量,将其解析为int,输出的fibonacci数等于cmd行参数。所以如果我输入7,输出将是13。自:11235813 有人能解释一下b=a;在for循环中?既然它们都已经等于1,为什么需要将它们设置为彼此相等循环变量的Java Fibonacci,java,Java,这是一个程序,它接受一个命令行变量,将其解析为int,输出的fibonacci数等于cmd行参数。所以如果我输入7,输出将是13。自:11235813 有人能解释一下b=a;在for循环中?既然它们都已经等于1,为什么需要将它们设置为彼此相等 int a,b,c; int n = Integer.parseInt(args[0]); a = 1; b = 1; c = 0; if (n == 1 || n == 2) System
int a,b,c;
int n = Integer.parseInt(args[0]);
a = 1;
b = 1;
c = 0;
if (n == 1 || n == 2)
System.out.println(1);
else
{
for (int i = 3; i<=n; i++)
{
c = a + b;
b = a;
a = c;
}
System.out.println(c);
}
}
inta、b、c;
int n=Integer.parseInt(args[0]);
a=1;
b=1;
c=0;
如果(n==1 | | n==2)
系统输出打印项次(1);
其他的
{
for(int i=3;ia
和b
最初等于1,因此在循环的第一次迭代中,此语句不起任何作用。但让我们看看在以后的迭代中会发生什么:
初始状态:
a=1
b=1
c=0
迭代1:
c=1+1=2
b=a=1
a=c=2
迭代2:
c=1+2=3
b=a=2
a=c=3
迭代3:
c=2+3=5
b=a=3
a=c=5
本质上,a
存储序列中的前一个数字,而b
存储倒数第二个数字。由于序列的前两个数字是1,1
,b
将在两次迭代中保持为1,但随后会更改。Fn=Fn-1+Fn-2
,即从a=1
和开始ode>b=1
,您必须计算下一个斐波那契数并将a
和b
移动到右侧的一个位置
public static long fibonacci(int n) {
n = Math.abs(n);
if (n == 0)
return 0;
if (n < 3)
return 1;
long a = 1;
long b = 1;
long c = 0;
for (int i = 3; i <= n; i++) {
c = a + b;
b = a;
a = c;
}
return c;
}
公共静态长fibonacci(int n){
n=数学abs(n);
如果(n==0)
返回0;
if(n<3)
返回1;
长a=1;
长b=1;
长c=0;
对于(int i=3;i),它们第一次是相等的,但是看看如果循环继续运行会发生什么,因为a
和b
需要在每次迭代中向前移动一步才能得到下一个c
。