【发布时间】:2010-09-14 05:09:52
【问题描述】:
我有以下功能:
int mult(int y, int z)
{
if (z == 0)
return 0;
else if (z % 2 == 1)
return mult(2 * y, z / 2) + y;
else
return mult(2 * y, z / 2);
}
我需要做的是通过归纳证明它的正确性。现在我遇到的问题是,即使我知道它在我运行它之后有效,但我无法遵循每个单独的步骤。
让我感到困惑的是,y 只显示为一个参数,除了递归部分之外,它在任何地方都没有出现在返回中,但函数实际上返回 y 作为答案。
这是怎么发生的?我需要能够跟踪发生的所有事情,以便为证明进行迭代。
【问题讨论】:
-
您在哪一步遇到了问题?
-
是什么阻止你对 z 进行归纳证明?你不知道归纳证明是如何工作的吗?这不是一个真正的 C++ 问题。这是一道数学题。对 z 进行归纳。您实际上不需要了解算法。您只需要能够解释 C++ 代码并熟悉归纳证明技术。
标签: c++ algorithm recursion analysis