[TAOCP 1.2.1-13]关于习题13

  每一步都要保证T <= 3n的要求,实际上是针对最终结果A4的,即A4的条件中可以加上T <= 3n,之前的中间步骤需要有更严格的限制,为后面的步骤留出余量。

  从中间的某一步骤看,后面还剩多少步骤呢?这是由d决定的。d是前一次递归的余数,本次递归的除数,它是在不断减小的。

  剩余步骤数 = 本次递归剩余步骤数 + 余下的递归次数 * 一次递归中的步骤数

 

  一次递归,从步骤E4开始,经E2,到E3,要么结束,要么开始下次递归。所以在A5处,本次剩余步骤数是0,A6处是2,A3处是1。

  余下的递归次数是d - 1,每次递归3个步骤。

  剩余步骤数 = 0/2/1 + 3(d - 1)

  

  综上,当前的T不能大于:3n - 0/2/1 - 3(d - 1) = 3(n - d) + 3/1/2   (A5/A6/A3)

 

  不需要为递归开始前执行的步骤数调整限制,如果不满足上式,说明无法保证任何情况下都在3n个步骤内结束。

考虑第一次执行E2后r = 0的情况,恰好也满足了上式。

posted @ 2011-10-04 22:11  汇聚点滴  阅读(167)  评论(0)    收藏  举报