我正在从一本书中学习Lua,这是我坚持的确切问题:
鉴于您需要将数字1加到100,请编写一个循环以完成操作。
我尝试了各种各样的事情,但我最近的尝试是:
n = 1
while (n < 100) do
n = n + 1
print (n)
end
答案 0 :(得分:6)
如前所述,您至少需要两个变量:一个用于保存sum,另一个用于计数到100。
固定步骤计算最好与for循环相关。
local sum = 0
for i = 1, 100 do
sum = sum + i
end
print(sum)
P.S。问题在哪里?不仅要添加损坏的代码,还要添加一些关于它有什么问题的话。
答案 1 :(得分:4)
看起来你需要做这样的事情:
local n = 1
local sum = 0
while (n <= 100) do
sum = sum + n
n = n + 1
end
print(sum)
如果将总和和计数器保存在单独的变量中,这应该会有所帮助。
答案 2 :(得分:1)
你需要另一个变量来保存总和:) 我相信这应该做到:
i=0
n=0
while i <= 100 do
n = i + n
i = i + 1
end
print(n)
答案 3 :(得分:0)
变量在首次分配后可见。因此,您需要在循环外部声明的一个变量来保存在循环内更新的总和,如下所示:
n = 0
sum = 0
while (n < 100) do
n = n + 1 -- n variable output is 1,2,3,4,5,...100
sum = sum + n -- sum variable remembers its value from previous iteration
print (sum)
end
当你执行sum = sum + n时,解释器获取sum的当前值,将n加到它上,并将结果放入sum中。在下一次迭代中,sum仍具有最近的值。比较,如果你已经完成了
while (n < 100) do
n = n + 1 -- n variable output is 1,2,3,4,5,...100
local sum = sum + n -- sum is "new" at every iteration so fails
print (sum)
end
此sum变量是本地循环,因此每次循环时,都会创建一个新的总和。唯一的问题是,
local sum = sum + n
该语句试图获取“sum”的值并将其添加到n,但是在该行上创建了sum,因此它还不存在,因此解释器将抛出有关尝试对全局“sum”进行算术的错误(右侧出现的总和对编译器不了解,因此它认为它是全局的,因为它还没有创建本地求和)。
答案 4 :(得分:0)
之前的所有答案都忽略了可以使用单个等式计算总和;
假设最大数字是“N”
从1到N的整数之和是; (N x(N + 1))/ 2