博文

目前显示的是标签为“算法”的博文

一边学Python,一边学算法

不带着问题去学习永远是没有什么成就的。 于是为了更好的学习Python,我还是决定开始看算法的研究书,然后用Python来实现这些算法。在学习算法的同时巩固Python的知识。 今天看的是《计算机程序设计艺术》第一卷,用Python验算了欧几里得的求最大公约数的算法 算法的描述是: 有数m和n,求它的公约数的方法是: 1.找到m和n之间的最大数,求它们的余数 2.如果余数为0,则其中较小的那个数即为所求 3.如果余数不为0,则将较大的数置为较小的那个数值,将较小的那个数值置为1中产生的余数,继续进行步骤1 于是产生的程序如下(Python3): __author__ = 'Siglud' # -*- coding: utf-8 -*- def find_greatest_common_divisor(x, y): '''查找最大公约数函数 根据计算机程序设计艺术中第一节的算法来求最大公约数''' temp = x > y and x%y or y%x if temp == 0: return x > y and y or x else: if (x > y): return find_greatest_common_divisor(y,temp)#此处一定要有Return,否则还会执行一轮 else: return find_greatest_common_divisor(x,temp) x = input("请输入x的值:") y = input("请输入y的值:") print(find_greatest_common_divisor(int(x),int(y))) 值得注意的是以下几点: 如果要在Python的程序中使用中文,记得加注释:# -*- coding: utf-8 -*- ,这样才能顺利的进行调试。 在递归的调用中记得一定要用return调用下一轮的函数,否则最后还会执行一轮,这样产生的数据就是错误的了。 ...