获取序列的递归函数无法正常工作

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;
}