|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
源码如下
- import time
- a = [10, 6, 8, 3, 7, 9, 1, 4, 2, 5]
- def time_master(func):
- def call_func():
- print("开始运行程序...")
- start = time.time()
- result = func()
- stop = time.time()
- print("结束运行程序...")
- print("共耗时%s" % (stop - start))
- return result
- return call_func
- @time_master
- def recuSum():
- if len(a) == 1:
- return a[0]
- return a[-1] + recuSum(a[:-1])
-
- print(recuSum())
复制代码
运行结果
- >>>
- ================ RESTART: C:/Users/Administrator/Desktop/递归法.py ================
- 开始运行程序...
- Traceback (most recent call last):
- File "C:/Users/Administrator/Desktop/递归法.py", line 23, in <module>
- print(recuSum())
- File "C:/Users/Administrator/Desktop/递归法.py", line 8, in call_func
- result = func()
- File "C:/Users/Administrator/Desktop/递归法.py", line 21, in recuSum
- return a[-1] + recuSum(a[:-1])
- TypeError: call_func() takes 0 positional arguments but 1 was given
复制代码
使用递归的函数是无法添加装饰器吗?,还是装饰器需要修改。
本帖最后由 学习编程中的Ben 于 2023-8-17 12:21 编辑
如果你想实现输出(显示耗时为0可能是因为我电脑运行速度较快,我把列表增长后就不这样了)
- 开始运行程序...
- 结束运行程序...
- 共耗时0.0
- 55
复制代码
的效果,你可以把递归函数在封装一下
代码:
- import time
- a = [10, 6, 8, 3, 7, 9, 1, 4, 2, 5]
- def time_master(func):
- def call_func(*args, **kwargs):
- print("开始运行程序...")
- start = time.time()
- result = func(*args, **kwargs)
- stop = time.time()
- print("结束运行程序...")
- print("共耗时%s" % (stop - start))
- return result
- return call_func
- @time_master
- def diao_yong(a):
- return recuSum(a)
- def recuSum(arr):
- if len(arr) == 1:
- return arr[0]
- return arr[-1] + recuSum(arr[:-1])
- print(diao_yong(a))
复制代码
|
|