代码: #求最大公约数 def gcd(x,y): if x < y: swap = x x = y y = swap if x%y == 0: return y else: gcd(y,x%y) print(gcd(10,20)) print(gcd(20,15)) 输出结果: 10 None 如果将return y替换成print(y),是可以正确输出结果的. 查阅了网上的文章,有说是在递归的每一个分支都需要给出一个return,于是将代码改为: def gcd(x,y): if x <
在做一道练习题(参照下篇博文<在当前目录下递归的查找包含指定字符串的文件>)的时候,发现函数中的return的值竟然是None,百思不得其解,尝试化繁为简,用以下的简单的代码验证了一下 问题版本代码:为什么return i 返回的是 i , 而print(i)得到的是 0 def func(i): if i == 0: print(i) return i elif i > -2: i = i-1 func(i) print(func(3)) 运行结果: 0 None 如果把递归过程画成流
python递归列出目录及其子目录下所有文件 一.前言 函数的递归,简单来说,就是函数内部调用自己 先举个小例子,求阶乘 def factorial(n): if n == 0: return 1 else: return n * factorial(n-1) 递归要注意两个事项: 1.必须要有最后的默认结果,也就是最底层目录的默认结果 if n == 0 2.递归参数必须向默认结果收敛 factorial(n-1) 要用到 os 模块下的几个方法 要用到 os 模块下的几个方法 二.递归列出目
首先看一个例子,让我们lock = threading.Lock() 时(代码第33行),程序会卡死在这里 #!/usr/bin/env python import threading,time def run1(): print("grab the first part data") # 申请锁 lock.acquire() # 将全局的变量,在此声明一下 global num num += 1 # 释放锁 lock.release() return num def run2():