我有一个练习,我必须计算斐波纳契数字直到100,然后打印它们。c while循环停止前条件
我有此代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i=2,fibonacci = 0, fParcialone = 1, fParcialtwo = 0;
printf("The %2dst Fibonacci number is %3d\n", i-1, fibonacci+1);
while (fibonacci <= 100){
fibonacci = fParcialone+fParcialtwo;
printf("The %2dst Fibonacci number is %3d\n", i, fibonacci);
fParcialtwo = fParcialone;
fParcialone = fibonacci;
i++;
}
return 0;
}
正如你可以看到,它打印的第12号,这个号码是大于100.我明白它为什么这样做。
一种选择是让这样的:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i=2,fibonacci = 0, fParcialone = 1, fParcialtwo = 0;
printf("The %2dst Fibonacci number is %3d\n", i-1, fibonacci+1);
while (fibonacci <= 100){
fibonacci = fParcialone+fParcialtwo;
if (fibonacci > 100){
return 0;
}
printf("The %2dst Fibonacci number is %3d\n", i, fibonacci);
fParcialtwo = fParcialone;
fParcialone = fibonacci;
i++;
}
return 0;
}
现在它现在的作品,但在每一个循环它使两个比较,而不是只有一个,我相信这种方式使用它来多少“处理器时间“(在这个例子中它很少,但在更大的规模上可能会有所不同)。
有没有更好的方法来做到这一点?
favolas
这仍然会打印太多。 – interjay 2012-03-04 10:41:21
糟糕,你是对的。我解决这个问题 – Coren 2012-03-04 10:42:30