给定一个小于 100 的自然数参数,总是返回 91 的递归函数

里奥·明戈

我正在阅读一本介绍形式验证算法和 Haskell Discrete Mathematics with Haskell 的书,在那里我发现了一个归纳定义函数的反例:

f91 :: Int -> Int
f91 x = if x > 100
        then x - 10
        else f91 . f91 $ x + 11

如果参数范围在 0 到 100 之间,这个递归函数承诺返回 91:我希望有人能向我解释这个递归函数的算法是如何工作的。

雅库布丹尼尔

你见过麦卡锡 91 函数吗?

假设您从一个 value 开始x > 100,那么结果很简单x - 10,因此是一个91以后的 value

现在假设值是 from90100然后f91else分支并x + 11101之间111第一个f91应用程序将所有值带到范围内91 - 101101满足 的then第二个应用分支,f91因此结果 ( x - 10) 是91

对于所有其他值,我们得到的范围内102 - 111else分支。但是else分支适用f91 . f91于该值;由于所有值都是> 100,第一个f91将值降低到92 - 101,其中仅101通过> 100第二个的条件f91并变为91

其余的值经过相同的循环,直到全部变为91假设您在11下面有不同的区间100f91一个使该区间高于该区间100,然后91以相同的方式从区间的较高端开始不断减小值请参阅维基百科页面中链接的归纳证明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是否总是一个很好的做法来包装一个递归函数?

递归PHP-一个排列后,为什么此递归函数不返回值?

Javascript:修改一个函数,该函数输出可变数量的参数以递归?

从另一个Kotlin函数返回一个递归函数

根据一个值和一个大小创建递归函数参数列表

C-n个自然数之和的递归函数

包含一个列表并返回两个列表的递归函数

如何使一个带有2个参数而不是1个参数的递归lambda函数?

C-检查给定的参数是否为自然数

如何创建一个返回另一个函数的函数,在C中隐式包含给定参数?

一个(递归)函数,将计算给定n的和

一个递归函数,返回Lisp中的第n个元素

编写一个递归函数,该函数返回具有最长连续序列的数字

给定参数后返回一个函数

Swift:返回一个递归函数(currying)

递归调用异步函数返回一个Promise

定义一个函数或循环,如果给定的整数参数小于X,则该函数或循环重新启动,或者拒绝接受小于3的值

需要两个str的递归函数返回一个已排序的str

Python3-仅接受一个参数并使用递归返回列表的函数

Excel VBA:.find函数返回运行时错误91

返回一个变量和一个函数(递归)

为什么要返回一个函数而不是再次运行该函数(递归)?

递归函数总是返回 False

从通过 JSON 搜索的递归函数返回一个值

如何定义一个函数,该函数采用数据类型的自然数并返回它们的总和?

如何使用 C++ 中的给定伪代码创建一个递归的可变参数函数?

递归- n 个自然数的和

证明 Isabelle 中自然数递归“小于”定义的基本性质

给定一个参数绘制指数函数