如何将序列中的所有数字相乘(python)

Bil*_*son 4 python numbers sequence

就像我告诉程序一样n=10,我将如何让它返回10*9*8*7*6*5....1

我想了一会儿循环,但我觉得我搞砸了某个地方,因为它没有总结序列中的所有数字.

我目前的代码看起来像这样

def product(n):
  i=n
  a=n-1
  while a>0:
    return i * a
    b=i * a
    a=a-1
    i=i-1
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法可以不使用递归?抱歉这个令人难以置信的初学者问题,但我正在努力教自己如何编码.你必须从某个地方开始!

谢谢!

Lev*_*von 7

既然您正在尝试学习编码,我不会给您一个完整的解决方案,但我会给您一些提示:

  • 有一个for从1到n(使用range(1, n+1))而不是你的while-loop 的循环.这将生成您想要乘以的值并迭代正确的次数(while有时可能有点棘手).

  • 有一个名为变量的变量product,每次都通过循环存储乘法的结果.

  • product在输入for-loop 之前初始化.进入内部后,您只需更新其值即可product.

  • 完成循环后,可以使用该return语句返回值product.

  • 最后,出于测试目的,您可能希望从较小的值开始n,例如4,并打印出您在循环中计算的值,以验证代码的工作方式.

有更多简洁和pythonic方法可以做到这一点,但这使用您已经设置的代码结构.当然还有你提到的递归.

一旦掌握了基础知识,您将会欣赏更为惯用的写作方式,或者为您调用适当的函数.