我给自己定了一个任务来编写这个算法,但是,由于我还没有完全的C语言经验,我希望有一个更简单的方法。
好吧,拿两个号码,
甲,乙
我们取它们的和,加上序列,然后加上第二项。
所以我们得到
a,b,a+b,b
在下一学期中,我们取第二个和第三个值(在我们做第一个和第二个之前),然后再做一次。
所以我们现在得到
a , b , a+b , b , a +2b , a+b
(续)
a+2b , b , a+3b , a+2b , 2a+3b , a+b
这一直持续到任何时候,它都不需要输入。
基本上我的算法是:下一个a是前一个b,下一个b是前一个a+前一个b。
但是,我不能用一般的方法用c编写代码,因为它将根据序列的附加值而不是第一、第二、第三个值等来工作。
我想这可以通过写文件和逐行扫描第n个数字来实现。不过,我想我已经把这件事搞复杂了。
有没有办法从这个序列中取n个值?
输入:a=1,b=1。预期产量:1,1,2,13,2,3,1,43,5,2
最佳答案
你应该使用数组,这并不难,而且比使用文件要好得多。阅读一些文档,您应该能够在5分钟内使用它们。
数组只是事物的序列,在你的例子中是整数。
你也许可以这样做:
int main () {
int array[MAX];
array[0] = 1;
array[1] = 1;
// Print the starting values:
printf("%d\n%d\n", array[0], array[1]);
// The loop is controlled by i, increased in steps of 2.
// j keeps the sequence of 1,2; 2,3; 3,4... used for the sum
for (int i = 2, j = 0; i < MAX; i+=2, j++) {
array[i] = array[j] + array[j+1];
array[i+1] = array[j+1];
printf("%d\n%d\n", array[i], array[i+1]);
}
return 0;
}