【发布时间】:2017-12-25 03:30:14
【问题描述】:
当您第一次尝试使用以下函数时,它会给您正确的答案,即给出两个数字的 LCM(最小公倍数)。 对于使用新参数的第二次调用,静态变量不会从 1 开始,这会给我错误的答案。 在进行递归循环之前是否有将其设置为 1 的方法?
int lcm(int a, int b)
{
static int common = 1;
if (common % a == 0 && common % b == 0)
return common;
common++;
lcm(a, b);
return common;
}
【问题讨论】:
-
为什么需要它是静态的?
-
使其成为非静态的并将其作为参数传递给
lcm。更好的是,用循环替换递归。 -
我正在做一个大项目,只是把这个简单的例子来表达我的问题,不幸的是,静态变量不能@drescherjm
-
如果你想在函数之外触摸它,你必须让它成为全局的。如果你不想不小心改变它,把它作为
privatestatic放到一个类中,根据需要friend函数。
标签: c++