我正在尝试编写高尔夫Python函数,该函数接受参数n并将其与没有pow,*或**的方块对齐。我现在处于这个阶段:
square = lambda n: n+n
我可以使用大约10个以上的字符迭代n + n次吗?
答案 0 :(得分:2)
你可以使用lambda的递归:
x = lambda y, c:y+y + x(y, c+1) if c< 10 else 0
print(x(10, 0))
输出:
200
答案 1 :(得分:1)
您可以使用递归,条件表达式和默认参数来执行此操作:
square = lambda n, i=0: n + square(n, i + 1) if n > i else 0
square(10) # 100
我认为这可能仅适用于正数...但可以使用具有一些明智绝对值的负数:
square = lambda n, i=0: abs(n) + square(n, i + 1) if abs(n) > i else 0
答案 2 :(得分:1)
正如@mgilson所说,你可以用递归和lambdas来做到这一点:
square = lambda n, m=0: 0 if n==m else n+square(n,m+1)
重要的是在每一步中随身携带结果
答案 3 :(得分:0)
square = lambda n : sum([n]*n)
编辑:(不使用*或**)
square = lambda n : n+sum(range(2,n+n,2))
答案 4 :(得分:0)
你可以试试这个:
sqr = lambda n : sum(n for i in range(n))
<强>输出强>
>>> sqr(9)
81
>>> sqr(12)
144