【问题标题】:Scheme: simple recursion方案:简单递归
【发布时间】:2012-09-19 01:59:25
【问题描述】:

我的递归函数将给定面积乘以 1.5,直到达到 100,000。输出应该是它必须乘以 1.5 的次数。我想我知道我需要做的大部分事情,但我不确定在我的 (if) 语句中应该放什么。

(define area-multiplier
  (lambda (area)
    (if (< 100000 area)
        0         ;what do I put here?
        (+ 1 (area-multiplier (* area 1.5))))))

【问题讨论】:

    标签: recursion scheme


    【解决方案1】:

    用一个例子来思考这个问题。在这种情况下,相关的例子是

    (area-multiplier 100000)
    

    (area-multiplier 100001)
    

    这些应该产生什么?

    【讨论】:

    • 哦,我明白了。我希望他们产生面积乘以 1.5 的次数。因此,0 在那个地方是正确的,因为它会将 0 添加到总数中并停止递归。谢谢!
    【解决方案2】:

    你所拥有的很好,除了如果你想让 100000 返回 0,那么将 &lt; 更改为 &lt;=。 :-)

    【讨论】:

    • 我什至没听懂。谢谢!原来我对递归的工作原理有一个根本的误解!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多