gpt4 book ai didi

java - Python 与 Java,For 循环

转载 作者:行者123 更新时间:2023-12-02 11:08:55 25 4
gpt4 key购买 nike

我在 python 中尝试一个简单的递归问题,并被 python 中的 for-loop-esq 实现难住了。该实现使用 range(x,y,z) 函数。

这是Python代码:

num = 25
f1 = 0
f2 = 1

for num in range(1,num,1):
num = f1 + f2
f1 = f2
f2 = num

print("num is : ", num)

Java 中的相同代码:

int num = 25;
int f1 = 0;
int f2 = 1;
for(int i = 1; i < num; i++){
num = f1 + f2;
f1 = f2;
f2 = num;
}
System.out.println("# at 25 is : " + num);

java 实现永远不会给出正确答案 (75025),因为 num 在 for 循环的第一行被覆盖 (num = f1 + f2) 。就像在 python 中一样,代码执行并提供正确的答案。怎么会? python 是否在幕后实现了某种 i 计数器?我正在使用 pyCharm 调试器来测试这一点。

最佳答案

我认为区别在于Python中的范围函数具有按值传递的参数。因此,即使您为 num 变量指定了新值,该函数仍保留您最初指定的 25,从而迭代 25 次。

在 Java 中,循环在每次迭代后检查 num 的值,以确定何时停止。由于第一次迭代时num的值变为1,满足停止循环的条件,因此只迭代一次。

我希望这是有道理的!

关于java - Python 与 Java,For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50726667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com