C++ 为什么我最终需要从while条件中减去7才能使代码正常工作
我对编码是新手,我正在尝试打印fabonacci序列,我无法理解为什么我不能在不从while循环条件中减去7的情况下获得正确的输出。谁能告诉我如何解决这个问题C++ 为什么我最终需要从while条件中减去7才能使代码正常工作,c++,C++,我对编码是新手,我正在尝试打印fabonacci序列,我无法理解为什么我不能在不从while循环条件中减去7的情况下获得正确的输出。谁能告诉我如何解决这个问题 #include<iostream> #include<cmath> using namespace std; int main (){ double y; double z; int x; cout <<"Enter the number you wan
#include<iostream>
#include<cmath>
using namespace std;
int main (){
double y;
double z;
int x;
cout <<"Enter the number you want to find the sequence of :";
cin>>x;
int zero = 1;
cout<<"Sequence equal to or less than "<<x<<" is :"<<"0";
do {
z = (pow(1.618,zero)-pow(-0.618,zero))/2.236;
zero++;
y=ceil(z);
cout<<","<<y;
} while(y<=x-7);
}
#包括
#包括
使用名称空间std;
int main(){
双y;
双z;
int x;
cout x;
int零=1;
难道你“需要”减去7,因为您希望打印的最后一个值小于x
,但在打印后要检查条件。将-7
放置有时会使打印的最后一个值小于x
,但并非总是如此。尝试x=123
获得输出0,1,1,2,3,5,8,13,21,34,55,89144
或x=3
获取0,1
,而它应该是0,1,1,2,3
要先修复代码,请检查条件,然后再打印:
do {
z = (pow(1.618,zero)-pow(-0.618,zero))/2.236;
zero++;
y=ceil(z);
if (y <= x) {
cout<<","<<y;
} else {
break;
}
} while(true);
do{
z=(功率(1.618,零)-功率(-0.618,零))/2.236;
零++;
y=细胞(z);
如果(y你“需要”减去7,因为您希望打印的最后一个值小于x
,但在打印后要检查条件。将-7
放置有时会使打印的最后一个值小于x
,但并非总是如此。尝试x=123
获得输出0,1,1,2,3,5,8,13,21,34,55,89144
或x=3
获取0,1
,而它应该是0,1,1,2,3
要先修复代码,请检查条件,然后再打印:
do {
z = (pow(1.618,zero)-pow(-0.618,zero))/2.236;
zero++;
y=ceil(z);
if (y <= x) {
cout<<","<<y;
} else {
break;
}
} while(true);
do{
z=(功率(1.618,零)-功率(-0.618,零))/2.236;
零++;
y=细胞(z);
如果(y问题是在这个循环中发生了太多事情:
int zero = 1;
do {
z = (pow(1.618,zero)-pow(-0.618,zero))/2.236;
zero++;
y=ceil(z);
cout<<","<<y;
} while(y<=x-7);
您可以使用更自然的循环构造来解决此问题:
for(int zero = 1; (y = fib(zero)) <= x; ++zero)
std::cout<<","<<y;
这有一个很好的优点,它可以用于不同的目的,并且可以永远生成斐波那契数
现在,您的循环可以进行所需的比较:
for(int y : fib_nums | std::views::take_while([x](int y) { return y <= x; }))
std::cout << "," << y;
for(int y:fib_nums | std::views::take_while([x](int y){return y问题是在这个循环中发生了太多事情:
int zero = 1;
do {
z = (pow(1.618,zero)-pow(-0.618,zero))/2.236;
zero++;
y=ceil(z);
cout<<","<<y;
} while(y<=x-7);
您可以使用更自然的循环构造来解决此问题:
for(int zero = 1; (y = fib(zero)) <= x; ++zero)
std::cout<<","<<y;
这有一个很好的优点,它可以用于不同的目的,并且可以永远生成斐波那契数
现在,您的循环可以进行所需的比较:
for(int y : fib_nums | std::views::take_while([x](int y) { return y <= x; }))
std::cout << "," << y;
for(inty:fib_nums | std::views::take_while([x](inty){返回y谢谢你帮助我,先生。谢谢你帮助我,先生。谢谢你的帮助:)谢谢你的帮助:)