【问题标题】:Galton Code - From Recursive to Iterative高尔顿代码 - 从递归到迭代
【发布时间】:2019-12-28 20:35:33
【问题描述】:
def galton(m, n):
    if m == 0:
        if n == 0:
            return 1
        else:
            return 0
    else:
        if n == 0:
            return 1
        else:
            return (galton(m-1, n-1) + galton(m-1, n))

你好, 有人知道我可以如何将此代码从递归更改为迭代吗? 我用高尔顿公式试过了,但我只得到了概率。

代码:

import operator as op
from functools import reduce

def ncr(n, r):
    r = min(r, n-r)
    numer = reduce(op.mul, range(n, n-r, -1), 1)
    denom = reduce(op.mul, range(1, r+1), 1)
    return numer / denom *(0.5**n)

【问题讨论】:

  • 不确定你所说的概率是什么意思。为什么要乘以(0.5**n)

标签: python recursion iteration


【解决方案1】:

您的galton 函数似乎只是一个recursive implementation of 'nCr'any nCr function works,稍作改动以在r > n 的情况下返回零:

def ncr(n, r):
    if r > n:
         return 0
    r = min(r, n-r)
    numer = reduce(op.mul, range(n, n-r, -1), 1)
    denom = reduce(op.mul, range(1, r+1), 1)
    return numer // denom

【讨论】:

    猜你喜欢
    • 2022-01-16
    • 2013-12-31
    • 2012-01-23
    • 2016-09-22
    • 2018-06-19
    • 2016-01-05
    • 1970-01-01
    相关资源
    最近更新 更多