我写了这个c ++程序,它假设做Fibonacci序列。问题一旦我通过8序列就变坏了,就好像不是最后一个号码搞砸了,我不知道如何解释它,只是阅读源代码,但请帮助我,非常感谢。
#include <iostream>
#include <unistd.h>
using namespace std;
int main()
{
sleep(3);
cout << "Doing The Fibonacci Sequence"; sleep(5);
cout << ""<<endl;
for (int num=1; num <= 8; num++)
{
/*int number, lastnum;
lastnum = num - 1;
number = num + lastnum;
cout << number<<endl;
*/
for(int i=1; i <= 8; i++)
{
//cout << num << "+" << i <<endl;
int numb = num+i;
int nun = numb - 1;
int c = nun + i;
cout << nun << " + " << i << " = " << c <<endl;
num ++;
}
}
return 0;
}
/*The Output
Doing The Fibonacci Sequence
1 + 1 = 2
3 + 2 = 5
5 + 3 = 8
7 + 4 = 11
9 + 5 = 14
11 + 6 = 17
13 + 7 = 20
15 + 8 = 23
*/
答案 0 :(得分:0)
Doing The Fibonacci Sequence
8
1 + 1 = 2
1 + 2 = 3
2 + 3 = 5
3 + 5 = 8
5 + 8 = 13
8 + 13 = 21
输出
if (Current != null)
{
selectStart = this.textBox.Text.Length;
foreach (string s in Current.Details)
{
this.textBox.AppendText(s + Environment.NewLine);
}
selectEnd = this.textBox.Text.Length;
this.textBox.Select(selectStart, selectEnd - selectStart);
this.textBox.SelectionBackColor = Color.FromArgb(51, 255, 51);
}
检查代码并查看它可能会回答您的问题。
答案 1 :(得分:0)
实际上你的序列在第二次迭代时已经坏了,应该是1 + 2 = 3.至于如何解决它... Fibonacci数是递归的经典例子,所以使用:
#include <iostream>
using namespace std;
void fib (int left, int right, int iterations) {
if (iterations > 0) {
cout << left << " + " << right << " = " << left + right << endl;
fib (right, left + right, iterations - 1);
}
}
int main () {
cout << "Doing The Fibonacci Sequence" << endl;
fib (1, 1, 8);
return 0;
}
这是有效的,因为从数学上讲,序列中的每个连续值都是根据其前身定义的。代码简单地遵循这种模式。这种技术(根据自身定义某些东西)被称为“递归”,并且它是许多人遇到麻烦的东西。
第一次调用(在main中)设置初始值(1和1),以及迭代次数(8)。函数本身打印这些值加上它们的总和(到目前为止很容易,对吧?),然后通过调用本身并使用适当的值开始下一次迭代。 if语句是必要的,以确保我们在正确的迭代次数后停止。
如果您无法理解这一点,只需按照控制流程(也许在一张纸上写出来):首先我们调用fib(1,1,8),下一个调用将是fib(1,2, 7),然后是fib(2,3,6),然后是fib(3,5,5),直到我们达到最后一个参数的零值。希望这可以帮助!