Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环变量的Java Fibonacci_Java - Fatal编程技术网

循环变量的Java Fibonacci

循环变量的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,输出的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.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;i
a
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