Tôi không chính thức làm một khóa python CS61A thông qua Berkely, và tôi hoàn toàn bị bối rối bởi một nhiệm vụ đơn giản yêu cầu tôi chỉ cung cấp một biểu thức ở cuối mẫu được cung cấp. Đây là mã sự cố:Stumped bởi một dòng của Python
# HW 4 Q5. (fall 2012)
def square(x):
return x*x
def compose1(f, g):
"""Return a function of x that computes f(g(x))."""
return lambda x: f(g(x))
from functools import reduce
def repeated(f, n):
"""Return the function that computes the nth application of f, for n>=1.
f -- a function that takes one argument
n -- a positive integer
>>> repeated(square, 2)(5)
625
>>> repeated(square, 4)(5)
152587890625
"""
assert type(n) == int and n > 0, "Bad n"
return reduce(compose1, "*** YOUR CODE HERE ***")
repeated(square, 2)(5) # Sample run
Tôi đã thử mọi thứ để thực hiện công việc này. Dường như với tôi rằng sự trở lại này cần phải làm điều đó:
return reduce(compose1, range(n))
Nhưng tôi thậm chí không gần. Compose1 mất hai args (f, g) và cả hai nên có chức năng. Nhưng khi câu lệnh trả về gọi 'compose1', 'compose1' sử dụng '0' cho 'f' và 'n' cho 'g'. Nhưng 'f' và 'g' phải là hàm được gọi là 'square'
Tôi đang thiếu gì.
Đây là gợi ý của tôi: bạn đang cố gắng "tính toán ứng dụng' n '' '' - có nghĩa là mã bị thiếu phải bao gồm (bằng cách nào đó) cả 'f' và' n'. báo cáo trả lại được đề xuất của bạn không làm bất kỳ điều gì với 'f'. suy nghĩ về cách bạn chạy 'f' cho' n' lần. –