您需要形成一个理论来解释为什么您认为算法会终止。理想情况下,将理论证明为数学定理。
\n\n您可以寻找问题状态的函数,该函数在每次递归调用时都会减少。例如,请参阅维基百科中对阿克曼函数的以下讨论
\n\n\n\n\nA(m, n) 的评估总是终止可能不是很明显。然而,递归是有界的,因为在每个递归应用中,要么 m 减小,要么 m 保持不变而 n 减小。每次 n 达到零时,m 都会减少,因此 m 最终也达到零。(更专业地表达,在每种情况下,对 (m, n) 按对的字典顺序递减,这是一种良好排序,就像单个非负整数的排序一样;这意味着一个不能在排序中下降连续无限次。)但是,当 m 减小时,n 可以增加多少 \xe2\x80\x94 没有上限,并且它通常会大大增加。
\n
这就是您应该考虑应用于您的算法的推理类型。
\n\n如果您找不到任何方法来证明您的算法终止,请考虑寻找可以证明其终止的变体。并不总是可以决定任意程序是否终止。诀窍是编写可以证明终止的算法。
\n