答案 0 :(得分:0)
您可以运行该函数传递一个额外的第四个和第五个参数来存储当前调用堆栈的高度以及到目前为止在调用图中观察到的最大高度。
请注意,这将需要解压缩该功能。另外,假设maxcalls
通过引用传递。
t1=t(x-1,y,z,calls,maxcalls)
t2=t(y-1,z,x,calls,maxcalls)
t3=t(z-1,x,y,calls,maxcalls)
if y<x:
t=t(t1,t2,t3,call+1,maxcalls)
else:
if calls>maxcalls:
maxcalls=calls
t=z
鉴于此功能的复杂性及其作为良好基准的用途,在不实际运行该功能的情况下计算此功能的可能性不大(<或者至少显而易见)。