一、空间增长的阶
因为从(cc 11 5)到(cc 0 1)总共16层(树的深度为16),所以可以看出最大步骤层数(所需空间增长的阶)是:11+5=16(因为(cc 11 x)中的x为(1-5),(cc y 1)的y为(0-11),(cc 11 1)中x和y都用了就算一个步骤层)。可推断出最大步骤层数可能和输入的关系大概为kinds-of-coins + amount 这样一个值,最大步骤层数的增长正比于输入(amount的值越大,kinds-of-coins +amount的值也就越大)。深度为n+5,其空间增长的阶为Θ(n)。
画的树。
二、时间增长的阶
总的步骤数,可以将简单的(cc n 1)和(cc n 2)单独拿出来观测,即只有1和5两种币值作为可换取的硬币:一、(cc n 1)的步骤数:(cc 1 1)~2,(cc 2 1)~4,(cc 3 1)~6,……,(cc n 1)~n2,在此情况下总的步骤数为n2,时间增长的阶为Θ(n);二、(cc n 2)的步骤数为(cc n 1) + (cc (n-5) 2) ,其中5为kinds-of-coins为2的值,(cc (n-5) 2)是右树的结点,从(cc n 2)往右一直下去为(cc (n-5) 2),(cc (n-25) 2),(cc (n-35) 2),……,(cc (n-m5) 2),把(cc n 2)也加入到这个数列中,可以看到规律(cc (n-05) 2),(cc (n-5) 2),(cc (n-25) 2),(cc (n-35) 2),……,(cc (n-m5) 2),右树的个数为m个(即n里最多有m个此时kinds-of-coins值所对应的币值的硬币),有多少右子树相应的就有多少个左子树。此时我们把所有右子树结点下和根下的左子树步骤数计算出来(根可看作是最大左子树的父结点),计算过程是这样的(n-05)2 + (n-15)2 + (n-25)2 + …… + (n-m5)2,等于2*(m+1)n - 2(((1+m)/2)m)*5,由此可见,总的步骤数是一个和n同时等差增长的参数为m的数的平方数相关的数,由此推出,当有5种币值的硬币时,所求得的总步数的公式中m的最高次幂也可达到5,也就是m5,由此推出步数增长的阶为Θ(nkinds-of-coins)
图片中的公式为计算左树结点总数。
验证了一下能计算出左树的结点,可惜不知道如何完善,以后有机会再慢慢思考如何能在任何情况下计算所有的结点数。