给定数组说a
,数字说x
,任务是编写一个程序,以便在x
被分配给每个元素时得到每个元素的最大整数函数的总和a
的元素。
a = [1,2,3,4,5]
result = gif(1/x) + gif(2/x) + gif(3/x) + gif(4/x), gif(5/x)
这可以通过循环轻松完成,但我想知道是否有一种方法可以更快更有效地完成上述任务(不使用循环)。
答案 0 :(得分:1)
当结果取决于各个值并且您对它们一无所知时,不使用循环就不能处理数组。这是一个普遍且不可避免的规则。
答案 1 :(得分:0)
如果你真的想避免循环,我想它可以写成一个递归函数,但我不希望它漂亮或更快。
如果你提前知道x,那么当元素添加到数组中时,可能会有一些选项可以完成一些工作。
否则速度的最佳选择可能(取决于数组的大小)是拆分数组并且并行使用多个循环然后将结果加起来。
如果您使用的是C ++,那么使用其中一种标准算法可能比您明确编写的循环更快。