Java Fibonacci for 循环变量

标签 java

这是一个程序,它接受一个命令行变量,将其解析为一个 int,输出是等于该命令行参数的斐波那契数。因此,如果我输入 7,输出将为 13。因为: 1 1 2 3 5 8 13 有人能解释一下 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);
    }
}

最佳答案

ab 最初等于 1,因此在循环的第一次迭代中,此语句不执行任何操作。但让我们看看后面的迭代中会发生什么:

Initial state:
a = 1
b = 1
c = 0
Iteration 1:
c = 1 + 1 = 2
b = a = 1
a = c = 2
Iteration 2:
c = 1 + 2 = 3
b = a = 2
a = c = 3
Iteration 3:
c = 2 + 3 = 5
b = a = 3
a = c = 5

本质上,a 存储序列中的前一个数字,而 b 存储倒数第二个数字。由于序列的前 2 个数字是 1, 1,因此 b 在两次迭代中将保持为 1,但稍后会发生变化。

关于Java Fibonacci for 循环变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54507046/

相关文章:

Java:为什么String相等性可以用==来证明?

java - 字节 toPositiveInt 方法

java - 游戏编程性能

java - setMovementMethod 在 android textview 中不起作用

java - 从@Valid 验证中排除某些字段

java - 为什么 Thymeleaf 代码在 HTML 的头部部分不起作用,但在正文中却能正常工作

Java - 并发/阻塞队列单元测试策略

java - 没有获取 PLAY_LANG 的正确值

javascript - JSP - Javascript,根据选择选项值更新表字段

java - 错误 : duplicate class: llang. 范围