奇偶分类递归_用递归的方法求该数列的第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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了