获取序列的递归函数无法正常工作
Recursive function to get sequence not working correctly
我正在尝试使用以下条件在 C 中编写序列 x(n):
x(0)=x
x(n)=1 if x(n-1)=1
x(n)=3*x(n-1)+1 if x(n-1)!=1 and x(n-1) not even
x(n)=x(n-1)/2 if x(n-1) even
我尝试了以下方法:
int sequence(int x, int n){
if(n==0){
return x;
}
if (sequence(x,n-1)==1){
return 1;
}
if((sequence(x,n-1)!=1)&&((sequence(x,n-1)%2)!=0)){
return 3*sequence(x,n-1)+1;
}
if((sequence(x,n-1)%2)==0){
return sequence(x,n-1)/2;
}
}
它应该给我序列中起点为 x 的第 n 个元素。但是,它不起作用...
您的代码按照您的建议执行。可能你原来的逻辑有问题。
f(x,0)=x
f(x,n)=1 if f(x,n-1)=1
f(x,n)=3*f(x,n-1)+1 if f(x,n-1)!=1 and f(x,n-1) not even
f(x,n)=f(x,n-1)/2 otherwise
您可以稍微清理一下您的代码以提高其可读性并使它稍微 faster/better。
int sequence(int x, int n){
if(n==0){
return x;
}
if (sequence(x,n-1)==1){
return 1;
}
if((sequence(x,n-1)%2)!=0){
return 3*sequence(x,n-1)+1;
}
return sequence(x,n-1)/2;
}
我正在尝试使用以下条件在 C 中编写序列 x(n):
x(0)=x
x(n)=1 if x(n-1)=1
x(n)=3*x(n-1)+1 if x(n-1)!=1 and x(n-1) not even
x(n)=x(n-1)/2 if x(n-1) even
我尝试了以下方法:
int sequence(int x, int n){
if(n==0){
return x;
}
if (sequence(x,n-1)==1){
return 1;
}
if((sequence(x,n-1)!=1)&&((sequence(x,n-1)%2)!=0)){
return 3*sequence(x,n-1)+1;
}
if((sequence(x,n-1)%2)==0){
return sequence(x,n-1)/2;
}
}
它应该给我序列中起点为 x 的第 n 个元素。但是,它不起作用...
您的代码按照您的建议执行。可能你原来的逻辑有问题。
f(x,0)=x
f(x,n)=1 if f(x,n-1)=1
f(x,n)=3*f(x,n-1)+1 if f(x,n-1)!=1 and f(x,n-1) not even
f(x,n)=f(x,n-1)/2 otherwise
您可以稍微清理一下您的代码以提高其可读性并使它稍微 faster/better。
int sequence(int x, int n){
if(n==0){
return x;
}
if (sequence(x,n-1)==1){
return 1;
}
if((sequence(x,n-1)%2)!=0){
return 3*sequence(x,n-1)+1;
}
return sequence(x,n-1)/2;
}