奇偶分类递归_用递归的方法求该数列的第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 @   xuchaoxin1375  阅读(6)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示