奇偶分类递归_用递归的方法求该数列的第x项k(x)_C语言

/
//往下输入/插入题目:
/
某数列为K(n)的定义为:。

       1              n=1

k(n)= k(n-1)×2 n为偶数
k(n-1)×3 n为奇数

      用递归的方法求该数列的第x项k(x)

输入
x(若x小于1输出input data error!)

输出
k(x)=

样例输入
1
2
0
样例输出
k(1)=1
k(2)=2
input data error!

*/

#include <stdio.h>
#include <string.h>
//在此下方插入自定义函数:
int k(int x);
int x_is_odd(int x);
int x_is_even(int x);
int main()
{
        int x;
    while (scanf("%d",&x) != EOF)
    {
        if(x < 1)
        {
            printf("input data error!\n");
        }
        else
        {
        printf("k(%d)=%d\n",x,k(x))  ;
        }
    }
//printf("test_2:\n");
   // scanf("%d",&x);//&x  
    return 0;
} 
int k(int x)
{
    if(x%2 == 0)
    {
       return x_is_even(x);
    
    }
    else
    {
       return x_is_odd(x);

    }
}
int x_is_odd(int x)//odd 基数的:
{
    int x_is_even(int x);
    if(x == 1) return 1;

    //int k;
    //x_is_odd(x);
   /*  k = x_is_odd(x-1) * 3;
    return k; */
    return x_is_even(x-1) * 3;
}

int x_is_even(int x)//odd 基数的:
{   
    int x_is_odd(int x);
    if(x == 1) return 1;
    
    //int k;
    //x_is_odd(x);
   /*  k = x_is_even(x-1) * 2;
    return k; */
    return x_is_odd(x-1) * 2;
}

简化处理:

  #include <stdio.h>
  #include <string.h>
  //在此下方插入自定义函数:
  int k(int x);
  int x_is_odd(int x);
  int x_is_even(int x);
  int main()
  {
          int x;
      while (scanf("%d",&x) != EOF)
      {
          if(x < 1)
          {
              printf("input data error!\n");
          }
          else
          {
          printf("k(%d)=%d\n",x,k(x))  ;
          }
      }
  //printf("test_2:\n");
     // scanf("%d",&x);//&x
      return 0;
  }
 /*主递归函数.*/
  int k(int x)
  {
      if (x == 1) return 1;/*出口*/
      if(x%2 == 0)
      {
         return x_is_even(x);

      }
      else
      {
         return x_is_odd(x);

      }
  }
 /*处理奇数情况.*/
  int x_is_odd(int x)//odd 奇数的:
  {
      if(x == 1) return 1;/*分支递归函数也是递归函数,同样要把递归出口摆在函数前头,否则出不来了.*/

      return x_is_even(x-1) * 3;
  }
 /*处理偶数情况*/
  int x_is_even(int x)//even 偶数的:
  {
      
      if(x == 1) return 1;

      return x_is_odd(x-1) * 2;
  }
posted @ 2022-03-24 22:20  xuchaoxin1375  阅读(17)  评论(0)    收藏  举报  来源