C++ 按位斐波那契数列
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/08/11 14:56:35
C++ 按位斐波那契数列
do
{
++x;
if (a[x]==0&&b[x]==0) break;
a[x]+=b[x];
if (a[x]>=10)
{
a[x]-=10;
++a[x+1] ;
}
}while (true) ;
for ( y=x-1 ; y>=0 ; --y )
{
cout i;
for (j=1 ; j=10)
{
a[x]-=10;
++a[x+1] ;
}
}while (true) ;
for ( y=x-1 ; y>=0 ; --y )
{
cout =0 ; --y )
{
cout
do
{
++x;
if (a[x]==0&&b[x]==0) break;
a[x]+=b[x];
if (a[x]>=10)
{
a[x]-=10;
++a[x+1] ;
}
}while (true) ;
for ( y=x-1 ; y>=0 ; --y )
{
cout i;
for (j=1 ; j=10)
{
a[x]-=10;
++a[x+1] ;
}
}while (true) ;
for ( y=x-1 ; y>=0 ; --y )
{
cout =0 ; --y )
{
cout
![C++ 按位斐波那契数列](/uploads/image/z/3620919-39-9.jpg?t=C%2B%2B+%E6%8C%89%E4%BD%8D%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97)
关键加法部分代码未贴出,问题应该不在这部分代码.
再问: 代码补充好了
再答: case 少了break导致 算法没问题#include<iostream>
using namespace std;
int main(){
int a[2000]={1},b[2000]={1},i,j ;
int x=-1 ;
int y ;
cin>>i;
for (j=1 ; j<=i ; ++j){
switch (j%2){
case 1 :{
do{
++x;
if (a[x]==0&&b[x]==0)
break;
a[x]+=b[x];
if (a[x]>=10){
a[x]-=10;
++a[x+1] ;
}
}while (true) ;
for ( y=x-1 ; y>=0 ; --y ){
cout << a[y] ;
}
cout << endl ;
x=-1;
}
break;//加break
case 0 :{
do{
++x;
if (a[x]==0&&b[x]==0)
break;
b[x]+=a[x];
if (b[x]>=10){
b[x]-=10;
++b[x+1] ;
}
}while (true) ;
for ( y=x-1 ; y>=0 ; --y ){
cout << b[y] ;
}
cout << endl ;
x=-1;
}
break;
}
}
system ("pause") ;
}
再问: 代码补充好了
再答: case 少了break导致 算法没问题#include<iostream>
using namespace std;
int main(){
int a[2000]={1},b[2000]={1},i,j ;
int x=-1 ;
int y ;
cin>>i;
for (j=1 ; j<=i ; ++j){
switch (j%2){
case 1 :{
do{
++x;
if (a[x]==0&&b[x]==0)
break;
a[x]+=b[x];
if (a[x]>=10){
a[x]-=10;
++a[x+1] ;
}
}while (true) ;
for ( y=x-1 ; y>=0 ; --y ){
cout << a[y] ;
}
cout << endl ;
x=-1;
}
break;//加break
case 0 :{
do{
++x;
if (a[x]==0&&b[x]==0)
break;
b[x]+=a[x];
if (b[x]>=10){
b[x]-=10;
++b[x+1] ;
}
}while (true) ;
for ( y=x-1 ; y>=0 ; --y ){
cout << b[y] ;
}
cout << endl ;
x=-1;
}
break;
}
}
system ("pause") ;
}