ae123 发表于 2020-10-29 17:21:59

关于for循环的疑问

我是跟着小甲鱼视频自学的 但学到去 求阶乘的那一课程 代码如下
def factorial(n):#定义一个函数 n是传入的参数也叫形参
    result = n   #变量默认等于n
    for i in range(1,n): # for语句循环 分别是1到N
                        #这里1到n不包含n例如 1~5 只到4
      
      result *= i   #这里变量是等于n的 就是n*1 循环到n*n-1
      

    return result



老师说是求阶乘的 但是我尝试输入5    result *= i(这个是不是result=i*result)这里开始就是 result =1*5 然后赋值给result 再循环 2*5再循环3*10   是这样吗但是老师说的是求阶乘是1*2*3*4
我是自学遇到问题只能发帖求助求老师大神门解答 因为这没有弄清楚没办法往下自学

ae123 发表于 2020-10-29 17:29:59

{:10_266:}

jackz007 发表于 2020-10-29 17:32:14

本帖最后由 jackz007 于 2020-10-29 17:35 编辑

def factorial(n):
    result = n
    for i in range(1 , n) :
      result *= i
    return result
      让我们来考察一下这个函数的循环过程
    当 n = 5 的时候,result 的初始值为 5,for i in range(1 , n) 将循环 4 次:
    第一次:i = 1, result = 5-> result = result * i = 5 × 1
    第二次:i = 2 ,result = 5 × 1-> result = reslt * i = 5 × 1 × 2
    第三次:i = 3 ,result = 5 × 1 × 2-> result = reslt * i = 5 × 1 × 2 × 3
    第四次:i = 4 ,result = 5 × 1 × 2 × 3 -> result = reslt * i = 5 × 1 × 2 × 3 × 4

    所以,当循环完成的时候,result = 5 × 1 × 2 × 3 × 4,这不就是 5 的阶乘吗?
页: [1]
查看完整版本: 关于for循环的疑问