编写按初始值循环的循环的更好方法是什么 我是C++新手,通过阅读编程原理和实践,尝试通过自学来学习。在这个特殊的问题中,我必须做一个平方函数。问题是我必须使用加法,而不是乘法

编写按初始值循环的循环的更好方法是什么 我是C++新手,通过阅读编程原理和实践,尝试通过自学来学习。在这个特殊的问题中,我必须做一个平方函数。问题是我必须使用加法,而不是乘法,c++,function,loops,C++,Function,Loops,上面的代码可以工作并返回正确的值,但与可读性的咒语相反,我发现它很难阅读和理解,我就是编写它的人。 我需要传入循环,初始整数,并让它循环多次,而不影响原始数量。是否有更好的编写方法。函数中不需要循环时间 int square(int x) { int looptime = x; int total = 0; for (int i=0 ; i < looptime; ++i) { total += looptime; } ret

上面的代码可以工作并返回正确的值,但与可读性的咒语相反,我发现它很难阅读和理解,我就是编写它的人。 我需要传入循环,初始整数,并让它循环多次,而不影响原始数量。是否有更好的编写方法。

函数中不需要循环时间

    int square(int x) {
    int looptime = x;
    int total = 0;
    for (int i=0 ; i < looptime; ++i) {
        total += looptime;
    }
    return total;
}

int main()
{
    for (int i = 0; i < 100; ++i)
        cout << i << '\t' << square(i) << '\n';
}

至于为什么它会无限地翻倍,如果没有看到前面的代码,这是很困难的。合乎逻辑的解释是for循环中的逻辑条件有缺陷,因此它从未在预期时退出

在这一部分中,逻辑可能是i
int square(int x) {
   int total = 0;
   for (int i=0 ; i < x; ++i) {
      total += x;
   }
   return total;
}

如果始终满足该条件,它将解释它将保留在循环中的症状,并在每个循环中添加该症状。如果你能重现早期的结果并展示早期的代码,这将使这一理论得到验证。

我开始打一个问题,要求你对代码进行分解,因为这毫无意义,但当我打这些问题时,我开始明白我是如何理解错误的。我添加了looptime,因为我最初得到的是一个无限循环,它会加倍,然后溢出,最终输出0。再看一遍代码,你会知道为什么我一开始就得到了这个吗?谢谢你的帮助。@ButchCrockett,我无法想象有问题的代码。如果你能让你的程序回到那个状态,我建议用有问题的代码创建一个新的SO帖子。我建议你也检查一下这样的问题。+1用于尝试使用你的精神力量。这是我第一次看到一张海报向他们求助,要求他们提供他们无法记住或生成的代码。这不是主要问题,也不是我期望的太多,而是一个在黑暗中拍摄的镜头。在对后来给出的解决方案有困难之后,我添加了looptime。@Michael我返回并撤消了,直到回到给我无限循环的状态。结果我有>而不是
 for (int i=0 ; i < looptime; ++i) {
    total += looptime;