1.再帰関数
如果一个函数在内部不调用其他的函数,
而是调用自身的话,这个函数就是递归函数。
1.1再帰関数の特性
例:再帰関数を使用して5を計算します!
# 应用: 运用递归函数计算5!
def fn(num):
if num == 1:
result = 1
else:
result = fn(num - 1) * num
return result
n = int(input("请输入一个正整数: "))
print(str(n) + " 的阶乘是: " + str(fn(n)))
演算結果:
関数呼び出しのプロセス:
匿名関数
匿名函数(lambda)是指没有名字的函数,即不再使用def语句定义的函数。
可以运用在需要一个函数但是又不想费神去命名这个函数的场合中。
通常情况下,这样的函数只使用一次。
パラメータの説明:
- 結果:関数の戻り値
- [arg1 [、arg2、...、argn]]:渡されるパラメーターのリストを指定するために使用されるオプションのパラメーター。複数のパラメーターはコンマで区切られます。
- 式:必須パラメーター。特定の機能を実現するための式を指定するために使用されます。パラメータがある場合、それらは式に適用されます。
- ラムダ式を使用する場合、複数のパラメーターが存在する可能性がありますが、式には1つしか含めることができません。つまり、1つの値のみを返すことができ、他の非式ステートメントを表示することはできません。(forまたはwhile)など。
例:
add = lambda arg1, arg2: arg1 + arg2
# 调用sum函数
print(add(1, 2))
演算結果:
1.1無名関数の高度な使用
我们可以将匿名函数作为参数传递。
例:
def fun(a, b, opt):
print("a = %d" % a)
print("b = %d" % b)
print("result = ", opt(a, b))
fun(1, 2, lambda x, y: x + y)
演算結果:
匿名函数作为内置函数的参数来使用
stus = [
{
"name": "小樱", "age": 18},
{
"name": "小红", "age": 17},
{
"name": "小绿", "age": 19},
]
# 按age排序:
stus.sort(key=lambda x: x['age'])
print(stus)
演算結果:
包括的な例:再帰関数
# 5.打印斐波那契数列 1 1 2 3 5 8 13....打印36项,每行打印6个
Fibonacci_num = 36
def getSum(num):
if num == 1 or num == 2:
return 1
else:
return getSum(num - 1) + getSum(num - 2)
format_flag = 0
for item in range(1, 37):
print(getSum(item), end="\t\t")
format_flag += 1
if format_flag % 6 == 0:
print()
演算結果: