|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
第一题:
code
## 函数接受一个形式参数,返回另一个函数而且又返回参数##
def relay(arg):
print('relayed')
def g():
return arg
return g
问题: 如果我们输入 relay(relay)()(9)(), 那么系统会返回什么?
答案: relayed
relayed
9
我 relay(relay) 这部分理解,就是(relay)()(9)()后面三个括号加起来后就不了解了。
求高手讲解下怎么解析。
第二题:
code
##这个函数是把一个正整数n,分成几个正整数的和, m代表这几个正整数中最大。 然后这个函数返回值是有多少种方法切割正整数n##
def c_part(n,m):
if n == 0:
return 1
elif n < 0:
return 0
elif m == 0:
return
else:
with_m = c_part(n-m,m)
without_m = c_part(n,m-1)
return with_m + without_m
比如说 c_part(6,4)
>>> 9
如果我们手算也是可以验证:
2+4=6
1+1+4=6
3+3=6
1+2+3=6
1+1+1+3=6
2+2+2=6
1+1+2+2=6
1+1+1+1+2=6
1+1+1+1+1+1=6
总共9种。with_m 表示蓝色那两个算式,代表最大是4时候,其余表示最大不是4时候.
我不理解的地方是,假设我们用 c_part(6,4), 那么 with_m = c_part(2,4). 想不通,为什么要n-m?
谢谢! |
|