我想为每一个新的调用增加一个数字,所以不是糖果(x-10),而是糖果(x-20),糖果(x-30)等等。
module AufgabeBonbons where bonbons :: Int -> Int bonbons x | x <= 550 && x >= 10 = 1 + bonbons(x-10) |otherwise = 0
我试着创建一个新的函数,但我不确定这是否是处理这个问题的正确方法。
oyjwcjzk1#
基于以下描述:好的,我有一个美分x,我想买糖果。糖果每个售价10美分,20美分等等,最多1欧元。我只能买一个糖果的每一种(每美分),我想知道如何mandies糖果,我可以买。你基本上是在寻找方程成立的最大的 n:
这是一个已知的级数,可以解为:
或者这个
事实上,想象一下我们有30美分,那么结果是(105 × 125-5)/10=2。因此,我们可以将其实现为:
bonbons :: Int -> Int bonbons x = min 10 (floor ((sqrt (5 * (4*x'+5)) - 5) / 10)) where x' = fromIntegral x
我想为每一个新的调用增加一个数字,所以不是bonbons(x-10),应该是bonbons(x-20),bonbons(x-30)等等。我们可以使用一个变量来指定下一个糖果的数量:
bonbons(x-10)
bonbons(x-20)
bonbons(x-30)
bonbons :: Int -> Int bonbons = go 10 where go m n | m <= n && m < 100 = 1 + go (m+10) (n-m) | otherwise = 0
1条答案
按热度按时间oyjwcjzk1#
基于以下描述:
好的,我有一个美分x,我想买糖果。糖果每个售价10美分,20美分等等,最多1欧元。我只能买一个糖果的每一种(每美分),我想知道如何mandies糖果,我可以买。
你基本上是在寻找方程成立的最大的 n:
这是一个已知的级数,可以解为:
或者这个
事实上,想象一下我们有30美分,那么结果是(105 × 125-5)/10=2。
因此,我们可以将其实现为:
我想为每一个新的调用增加一个数字,所以不是
bonbons(x-10)
,应该是bonbons(x-20)
,bonbons(x-30)
等等。我们可以使用一个变量来指定下一个糖果的数量: