【问题标题】:Recursive coin change (partitions) with powers of 22 次方的递归硬币找零(分区)
【发布时间】:2019-09-26 08:59:41
【问题描述】:

问题:Count_Change

一旦机器接管,每枚硬币的面额将是 2 的幂:1 美分、2 美分、4 美分、8 美分、16 美分等。一枚硬币可以值很多钱。

给定一个正整数数量,如果硬币值的总和是数量,则一组硬币会改变数量。例如,以下集合对 7 进行更改:

7 1-cent coins
5 1-cent, 1 2-cent coins
3 1-cent, 2 2-cent coins
3 1-cent, 1 4-cent coins
1 1-cent, 3 2-cent coins
1 1-cent, 1 2-cent, 1 4-cent coins

因此,有 6 种方法可以为 7 找零。编写一个递归函数 count_change,它接受一个正整数金额并返回使用这些未来硬币找零的方法数。

样品运行;

def count_change(amount):
    """Return the number of ways to make change for amount.

    >>> count_change(7)
    6
    >>> count_change(10)
    14
    >>> count_change(20)
    60
    >>> count_change(100)
    9828
    >>> from construct_check import check
    >>> # ban iteration
    >>> check(HW_SOURCE_FILE, 'count_change', ['While', 'For'])
    True

我的代码:

def largestPart(k):
        if k <= 1:
            return 0
        else:
            i = 1
            while i < k:
                i = 2 * i
        return i
    def partFunction(n,m):
        if n <= 0:
            return 0
        elif m <= 0:
            return 0
        elif n == 1:
            return 1
        elif m == 1:
            return 1
        return partFunction(n - m, m) + partFunction(n, m // 2)
    return partFunction(amount, largestPart(amount))

我的问题:当输入值 n 等于 10 时,返回值假设为 14,但我一直得到 10 作为返回值。谁能告诉我为什么我得了10?非常感谢任何帮助!

【问题讨论】:

    标签: recursion


    【解决方案1】:

    如果 n 等于 0,partFunction 应该返回 1。

    【讨论】:

      猜你喜欢
      • 2023-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      • 2013-12-09
      • 2022-11-19
      • 1970-01-01
      相关资源
      最近更新 更多