首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python vs Java,For-Loop

Python vs Java,For-Loop
EN

Stack Overflow用户
提问于 2018-06-07 01:53:45
回答 2查看 3K关注 0票数 1

我在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调试器来测试这一点。

EN

回答 2

Stack Overflow用户

发布于 2018-06-07 02:15:42

在for循环的第一次迭代中,将num设置为1 (num = f1 + f2)。由于在您的循环条件中使用了num,因此循环将在第一次迭代后停止。要让它以与python代码相同的方式工作,您需要另一个变量,并将num保持为25

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

Stack Overflow用户

发布于 2018-06-07 02:13:00

我的猜测是,range(1, num, 1)中的函数只在range(1,25,1)中看到类似这样的东西,或者换句话说,它是带有通过值传递的参数的函数。

函数范围的返回值应该类似于[1,2,3 ...25]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50726667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档