木胖子 2020-10-21 14:32 采纳率: 100%
浏览 107
已采纳

【Lua】for循环基础问题

Lua for

下列**正确**代码实现功能:

计算1至5区间每个数的平方。

function square(max,n)
    if n < max
    then
        n = n + 1
        return n, n * n
    end
end

for i,n in square,5,0
do
    print(i,n)
end

输出:

1   1
2   4
3   9
4   16
5   25

问题现象:

在square函数中,增加else分支,返回1,1。如下:

function square(max,n)
    if n < max
    then
        n = n + 1
        return n, n * n
    else    -- 增加分支
        return 1,1
    end
end

for i,n in square,5,0
do
    print(i,n)
end

输出:

1   1
2   4
3   9
4   16
5   25
1   1
2   4
3   9
4   16
5   25
1   1
2   4
....

问题:

我认为输出应该是:

1   1
2   4
3   9
4   16
5   25
1   1
1   1
1   1
....

我个人认为,当循环进行到第6次以后,square函数n参数等于5,没有条件使其增加,一直返回1,1。

第7次为什么n又变成2了,哪个条件改变了n的值?

  • 写回答

1条回答

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥15 session失效问题
      • ¥15 GMS地下水数值模拟无法打开
      • ¥15 树型结构的数据怎么匹配分支
      • ¥15 stm32F4用.引不出来结构体成员怎么解决
      • ¥15 .exe文件打不开怎么解决?
      • ¥30 Syntax Error: TypeError: this.getOptions is not a function的问题
      • ¥15 eclipse Android环境搭建
      • ¥15 unity中脚本之间的继承有什么作用
      • ¥15 C语言内存对齐代码不太理解
      • ¥15 uniapp中的uni-file-picker组件多图上传,删除,显示。以及C#.Net后端处理问题