首页 > 解决方案 > 我不知道为什么我把它作为我的输出?

问题描述

该程序应该从位置 0 开始遍历数组中的数字,并将每个数字与它之前的数字相乘。例如,因为 3 是第一个元素,左边没有可以乘它的元素,所以它保持不变。对于第二个位置,您可以将 7 乘以它左侧的值 3,从而将 21 放置在 7 所在的数组中。用我的数学我应该得到 [3, 21, 105, 630, 5670] 作为输出,但我得到了这个: [3, 21, 315, 119070, 21266497350]

front = [3,7,5,6,9]
temp = 1
for i in range(len(front)):
    print("before mult " + str(temp))
    front[i] *= temp
    print(front)
    temp *= front[i]
    print("after mult " + str(temp))

完整的输出是:

before mult 1
[3, 7, 5, 6, 9]
after mult 3
before mult 3
[3, 21, 5, 6, 9]
after mult 63
before mult 63
[3, 21, 315, 6, 9]
after mult 19845
before mult 19845
[3, 21, 315, 119070, 9]
after mult 2362944150
before mult 2362944150
[3, 21, 315, 119070, 21266497350]
after mult 50251545504173002500

标签: pythonalgorithm

解决方案


你在做不必要的乘法

front = [3,7,5,6,9]
temp = 1
for i, v in enumerate(front):
    temp *= front[i]
    front[i] = temp

print( front ) 

推荐阅读