gpt4 book ai didi

带循环的 ruby​​ 函数返回错误值

转载 作者:太空宇宙 更新时间:2023-11-03 17:29:53 26 4
gpt4 key购买 nike

我对代码有疑问

@nums = [3, 2, 4]
@target = 6

def two_sum(nums, target)
random1 = nums.sample
random2 = nums.sample
ary1 = [nums.index(random1), nums.index(random2)].sort
if random1 + random2 == target
return ary1
else
return 1
end
end

loop do
if two_sum(@nums, @target) != 1
print two_sum(@nums, @target)
break
end
puts 2
end

此代码应返回 [3, 2, 4] 中两个元素的索引,其总和为 6,即 [1, 2][0, 0]。但偶尔会出现 1,尽管它不应该出现。

为什么会这样?

最佳答案

这部分代码:

if two_sum(@nums, @target) != 1
print two_sum(@nums, @target)

您正在对 two_sum 函数进行两次单独调用,一次是在 if 中,第二次是在 print 中。因此,如果第一个结果不等于 1,您将进行第二次调用(可能返回 1)并打印第二次调用的结果。

相反,您可以捕获单个调用 two_sum 的结果并打印出来,例如

loop do
result = two_sum(@nums, @target)
if result != 1
print result
...

如果您愿意,也可以结合赋值和比较:

if (result = two_sum(@nums, @target)) != 1
...

关于带循环的 ruby​​ 函数返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43732323/

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