python递归求x的y次方_01月04日三周三次【Python基础进阶】

1.6 多类型传值和冗余参数

1.7 函数的递归调用

1.6 多类型传值和冗余参数

多类型传值

## 传元组(*元组变量名)

def fun(x, y):

return x + y

t = (1, 2) # 元素个数必须和函数变量数对得上,不然报错

# 调用

print(fun(*t)) # 在元组变量前加个*就可以了

> 3

print(fun(*(1,3))) # 这样写也可以

> 4

###################################

def fun(x, y, z):

return x + y + z

t = (1,2)

print(fun(2,*t)) # 如果是数字结合元组,元组必须写在最后;如果元组只有一个元素时,不可使用;否则报错

#################################

## 传字典(**字典变量名)

def fun(x, y, z):

return x + y + z

d = {'x':1, 'y':2, 'z':3} # 字典中的key必须和形参变量名一样;否则报错

print(fun(**d))

###################################

def fun(a, b, c, d, x, y, z):

return a + b + c + d + x + y + z

t = (1, 1)

d = {'x':1, 'y':1, 'z':1}

print(fun(1, 1, *t, **d))

冗余参数

def fun(x, *t, **d):

return x,t,d

print(fun(1))

> (1, (), {})

##########################

def fun(x, *t, **d):

return x,t,d

print(fun(1,2,'a','b'))

> (1, (2, 'a', 'b'), {})

##########################

def fun(x, *t, **d):

return x,t,d

print(fun(1,2,'a','b',y=2))

> (1, (2, 'a', 'b'), {'y': 2}) # 以等式转换字典

#########################

def fun(x, *t, **d):

return x,t,d

print(fun(1,2,'a',[1,2],*(1,2),y=2,**{'f':11}))

> (1, (2, 'a', [1, 2], 1, 2), {'y': 2, 'f': 11})

1.7 函数的递归调用

## 阶乘

def fun(n):

sum = 1

for i in range(1, n+1):

sum *= i

return sum

print(fun(10))

> 3628800

##############################

## 求和

def fun(n):

sum = 0

for i in range(1, n+1):

sum += i

return sum

print(fun(100))

> 5050

递归的注意事项

必须有最后的默认结果

if n == 0

递归参数必须向默认结果收敛的:

fun(n-1)

## 阶乘(递归法)

def fun(n):

if n == 0:

return 1

else:

return n * fun(n - 1)

print(fun(10))

> 3628800

#########################

## 求和(递归法)

def fun(n):

if n == 0:

return 0

else:

return n + fun(n - 1)

print(fun(100))

> 5050

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值