Python算法设计 - McCarthy 91

McCarthy91是一个用于教学的递归函数,当输入大于100时返回n-10,否则递归调用自身。文章提供了两种Python实现方式,并强调其作用在于理解递归证明思想。作者小鸿致力于使编程更有趣,分享算法、爬虫、数据分析等相关知识。
摘要由CSDN通过智能技术生成

一、什么是 McCarthy 91

McCarthy 91 是一个递归的函数表达式如下

在这里插入图片描述
函数的意思是当输入一个大于 100 的数字 n 时返回 n-10,而当输入一个小于等于101的数字 n 时递归的对 n 进行运算,但是结果总是 91。

二、有什么用?

这个函数的作用,是做为一个例子来让学生学会如何证明某种规范或是模式(或者说学会一种证明思想),而不是真的让你去证明 f(5) 是不是 等于91

三、Python算法实现


#第一种设置变量写法
def mccarthy91(n):     
  k = 1
  while k:
    if n > 100:
      n -= 10
      k -= 1
    else:
      n += 11
      k += 1
  return n
# 第二种递归写法
def mccarthy91_rec(n):
  if n > 100:
    return n - 10
  else:
    return mccarthy91_rec(mccarthy91_rec(n + 11))


print(mccarthy91_rec(50))

注意:上面这两种函数写法都可以,但建议使用第二种

输出结果
在这里插入图片描述

如图所示,无论使用哪种函数,对于n小于等于101,结果都为91

四、作者Info

Author:小鸿的摸鱼日常,Goal:让编程更有趣!

专注于算法、爬虫,游戏开发,数据分析、自然语言处理,AI等,期待你的关注,让我们一起成长、一起Coding!

版权说明:本文禁止抄袭、转载,侵权必究!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炒青椒不放辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值