程序计算总和? C ++

时间:2019-10-23 19:01:57

标签: c++

因此,我正在尝试编写一个程序,该程序将计算项的总和,但每个项是前一项的3倍减去前一项的第二项,因此看起来像0, 1, 3, 8, 21, 55,依此类推。例如,如果用户需要4个术语,则程序应输出21。遇到问题的部分是设置变量以存储先前的数字和第二先前的数字。这就是我到目前为止所拥有的。

#include <iostream>
using namespace std;

int main(){
  int num;
  int last;
  int last2;
  int current;

  cout << "Number of terms to be shown: ";
  cin >> num;

  for(int i = 0; i < num; i++){
    for(int term; term <= i; i++){
      //THIS IS WHERE IM STUCK
    }
  }
}

我认为它是第一个for循环的方式将告诉嵌套的for循环运行多少次。在嵌套的for循环中,我认为是在更新current = (last * 3) - last2last变量以保持术语列表不变的同时数学应该去的地方(last2)。然后在循环之外我将cout << current显示为术语。像往常一样,任何帮助都将受到赞赏!

3 个答案:

答案 0 :(得分:3)

您的代码中存在未定义的行为,

for(int i = 0; i < num; i++){
    for(int term; term <= i; i++){ // term not initiaized. and the loop is infinte
        //THIS IS WHERE IM STUCK
    }
}

您正在使用term而不进行初始化。另外,您还停留在内部循环中,因为您应该在内循环中增加term而不是i

所以您可以这样:

for(int i = 0; i < num; ++i){
    for(int term = 0; term <= i; ++term){
        // now rock here
    }
}

答案 1 :(得分:2)

您通常会记住最后两个值,然后继续计算下一个值:

#include <iostream>
using namespace std;

int main()
{
  int num;

  cout << "Number of terms to be shown: ";
  cin >> num;

  int p1 = 1;
  int p2 = 0;
  cout << p2 << " " << p1 << " ";
  num -= 2;

  while (num > 0)
  {
      int current = 3 * p1 - p2;
      cout << current << " ";

      p2 = p1;
      p1 = current;
      num--;
   }
}

答案 2 :(得分:1)

这是我在阅读您的问题时脑海中所看到的算法:

RewriteEngine On

RewriteRule ^([^/]*)$ /profile.php?id=$1 [L]

它使用recursion进行自我调用,这是一种可视化解决此类问题的好方法。该函数按原样运行,但仅对 small example.com/profile.php?id=abcdefgh s有效,否则将导致堆栈溢出。这也很耗时,因为它要执行函数调用并计算很多次所有项。