2014-01-27 23 views

回答

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 

鉴于此功能的复杂性和其作为一个很好的基准使用,这是不可能的,有一种方法(或至少一个明显的例子)来计算,而又没有实际运行的功能。