Python递归函数的正确理解与使用
小明很喜欢学数学,并且喜欢做一些奇怪的题,这天他想知道对于给定的 N ,有多少个 M 满足“ M<=N, gcd(N,M)==1, M 是偶数”。请你编写程序帮助小明解决这个问题。
输入数据
输入数据第一行为一个正整数 T ,表示测试数据的组数。 接下来的 T 组测试数据中, 每组测试数据为一行,包含一个整数 N (1≤T≤100, 1≤N≤10000 )。
输出数据
对于每一组输入数据,在单独的一行中输出 ”Case #id: M”, 表示第 id 组数据结果是 M , id 从 1 开始;
样例输入
1
2
11
23
Case #2: 0
Case #3: 5
Case #4: 11
gcd(a,b)==1 表示 a 与 b 的最大公约数为 1 ,即 a 与 b 互素。
- 讲讲算法思路
- 分析输入输出与显示
- 源代码与递归函数的精华所在
3.
#求法,可能会用到函数,递归函数等
def gcd(x,y):#定义递归函数if x>=y:z1=x%y#取余数if z1==0:#如果余数==0,立马返回0这个指示表示x,y这两个数不是互素。return 0elif z1==1:#如果余数==1,立马返回1这个指示表示x,y这两个数是互素。return 1else:#如果上述的情况都不满足,立马递归,用结果作为输入,再次计算,直到返回值是0/1return gcd(y,z1)else:(x,y)=(y,x)z1=x%yif z1==0:return 0elif z1==1:return 1else:return gcd(y,z1)
test_nums=int(input())
stores=[]
for ii in range(test_nums):stores.append(int(input()))
m=0#计数
for i in stores:n=0m=m+1for M in range(2,i+1,2):if_is=gcd(i,M)if if_is==1:n=n+1print('Case #%d:'%(m),n)
这里的递归函数其实写的还是比较保守的,
def get_gcd(a,b): if(a % b) == 0: return b else: return get_gcd(b, a % b)
这是某位同学的改进,直接判断递归函数的结果是不是1,是1的话就是互素。这里因为递归,所以就算较小数%较大数也不会有关系,无非就是在递归一次。
>>> 10%3
1
>>> 3%10
3
>>> 10%3
1
递归函数的特点:定义的函数里一定要在return后面再次调用原函数,并且有if函数的return某一个计算的变量作为最后的结果。不然就没完没了了。
Python递归函数的正确理解与使用相关推荐
- python函数可以作为容器对象吗_正确理解Python函数是第一类对象
正确理解 Python函数,能够帮助我们更好地理解 Python 装饰器.匿名函数(lambda).函数式编程等高阶技术. 函数(Function)作为程序语言中不可或缺的一部分,太稀松平常了.但函数 ...
- 正确理解Python函数是第一类对象
正确理解 Python函数,能够帮助我们更好地理解 Python 装饰器.匿名函数(lambda).函数式编程等高阶技术. 函数(Function)作为程序语言中不可或缺的一部分,太稀松平常了.但函数 ...
- python的上下文管理用哪个关键字_正确理解python中的关键字“with”与上下文管理器...
正确理解python中的关键字"with"与上下文管理器 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: 正确理解python中的关键字&quo ...
- python 有关 if __name__ == ‘__main__‘ 的正确理解
写此文章的初衷在于笔者碰到一道题目如下: "假设有Python程序文件a.py,其代码如下: def main():if __name__ == '__main__':print(1)els ...
- python递归函数例题_递归案例python
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 而对应的中文翻译 "递归" 却表达了两个意思:"递 ...
- python递归函数错误使用方式
1.python递归函数入坑: ip_list = [] def chooseDebugLinux():import randominfo = {}dockerip = random.randint( ...
- python四舍五入round_四舍五入就用round( )?Python四舍五入的正确打开方式!
四舍五入就用round( )?Python四舍五入的正确打开方式! 2018-09-22 21:40 阅读数 4 <>round( )函数简介 菜鸟教程中介绍到,round() 函数作用就 ...
- python中递归函数写法_《Python入门08》你知道Python递归函数怎么写吗~~
点击上方的"小小白AI",选择"关注" 重磅知识,第一时间送达 前言 直入主题~~~ 1.什么是递归函数 前面深入介绍了如何创建和调用函数.你知道,函数可调用其 ...
- 如何系统的自学python-自学Python应该如何正确系统学习,避免少走弯路
原标题:自学Python应该如何正确系统学习,避免少走弯路 人生苦短,我用 Python. 学习 Python 的初学者往往会面临以下残酷的现状: 网上充斥着大量的学习资源.书籍.视频教程和博客,但是 ...
最新文章
- webpack+vue实践
- (0014)iOS 开发之Mac自带的Apache本地服务器玩耍(01)
- c++list支持索引吗_还在为不懂Python切片操作及原理而苦恼吗?漫画帮你立马理解掌握...
- 用Java实现天天酷跑(附源码),只能用牛逼来形容了!
- python语言格式化输出_Python字符串格式化输出
- Spring抽取jdbc配置文件
- hiredis使用,封装代码示例
- SAP ERP和C4C Acount和Contact的双向同步
- 插入1000万条数据到mysql数据库表
- iOS - OC RunLoop		运行循环/消息循环
- Elasticsearch mysql 增量同步
- mysql数据库练习题_50道SQL练习题及答案(MySQL版)
- Pytorch模型量化
- uva 11137	Ingenuous Cubrency
- 10000小时和10000次提交
- 计算机基础学习记录4-2
- CO Business Transaction-CO业务处理
- 洛谷1309 瑞士轮
- 2022-2028全球细胞和基因治疗制造服务行业调研及趋势分析报告
- 耗时一年,乘风破浪:一群牛逼的人,做成了一件牛逼的事儿!
热门文章
- C语言socket发送json,C++实现Socket传输json封装的Mat
- java 改为matlab_用面向对象的方法将一段JAVA代码转化为matlab
- 事务超时时间无效_Java面试题:Spring事务面试考点的集合整理。建议收藏阅读...
- 移动互联网的发展趋势ios与android哪更有前景,移动互联网是什么?移动互联网现状,发展趋势及前景...
- git合并分支的时候将某个文件添加到忽略列表_常用的 Git 命令
- mysql数据还原时报错_还原mysql数据库时报错
- Android动画定义知识小结
- Volley源码学习1--volley结构图
- java 抽象类和接口2--什么时候用接口什么时候用抽象类
- Cisco Packet Tracer7.1 rip协议实验