EDUCoder编程练习题解(递归与嵌套函数)
第1关:递归求阶乘数列
任务描述
题目描述:用递归求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字。
输入
一个整数n(1<=n<=20)
输出
输出表达式的值,占一行。
测试说明
样例输入:
5
样例输出:
153
提示:
因阶乘结果变化很快,所以输入数据不可太大。
解题说明:
虽然说把功能封装到函数是一般的做法,但是就这个题来说,这不是好的做法。
这个题使用迭代计算的方法,计算速度更快。
解题程序(2种,推荐第1种):
/* 第1关:递归求阶乘数列 */#include<stdio.h>
int main(void)
{int n, i;scanf("%d",&n);long long t = 1, ans = 0;for(i = 1; i <= n; i++) {t *= i;ans += t;}printf("%lld", ans);return 0;
}
/* 第1关:递归求阶乘数列 */#include<stdio.h>
long long solve(long long n){/*********Begin*********/long long p = 1, i;for(i = 1; i <= n; i++)p *= i;return p;/*********End**********/
}
int main(void)
{long long n;scanf("%lld",&n);long long ans=0;for(long long i=1;i<=n;i++)ans+=solve(i);printf("%lld", ans);return 0;
}
第2关:递归实现输出一个整数的逆序
任务描述
题目描述:编写一个递归函数,将一个整数n逆序输出,比如,n = 12345,输出54321。
输入
一个整数n。
输出
该整数的逆序。
测试说明
样例输入:
12345
样例输出:
54321
解题程序:
/* 第2关:递归实现输出一个整数的逆序 */#include<stdio.h>
void solve(int n){printf("%d", n%10);/*********Begin*********/n /= 10;/*********End**********/if(n>0) solve(n);
}
int main(void)
{int n;scanf("%d",&n);solve(n);return 0;
}
第3关:将整数递归转换成字符串
任务描述
题目描述:用递归法将一个整数n转换成字符串。例如,输入n为483,输出字符串 4 8 3,每个数字后面接一个空格用于隔开字符。
输入
一个整数n
输出
相应的用空格隔开的数字字符。
特别注意:输出字符之间有空格
测试说明
样例输入:
483
样例输出:
4 8 3
解题程序:
/* 第3关:将整数递归转换成字符串 */#include<stdio.h>
void solve(int n){int temp=n%10;/*********Begin*********/n /= 10;if(n) solve(n);/*********End**********/if(n)printf(" %d", temp);elseprintf("%d", temp);
}
int main(void)
{int n;scanf("%d",&n);solve(n);return 0;
}
第4关:递归实现Ackman函数
任务描述
题目描述:编写一函数实现下列Ackman函数,其中m,n为正整数
…
输入
一个两个整数
输出
输出表达式的值,占一行。
测试说明
样例输入:
1 1
样例输出:
3
解题程序:
/* 第4关:递归实现Ackman函数 */#include<stdio.h>
int Acm(int m,int n){if(m==0&&n>0)/*********Begin*********/return n + 1;/*********End**********/else if(n==0&&m>0)/*********Begin*********/return Acm(m - 1, 1);/*********End**********/else/*********Begin*********/return Acm(m - 1, Acm(m, n - 1));/*********End**********/
}
int main(void)
{int m,n;scanf("%d%d",&m,&n);printf("%d", Acm(m,n));return 0;
}
EDUCoder编程练习题解(递归与嵌套函数)相关推荐
- EDUCoder编程练习题解(结构体)
编辑与调试 顺序结构 选择结构一 选择结构二 循环一 循环二 函数 递归与嵌套函数 一维数组和二维数组 字符数组 指针一 指针二 ...
- EDUCoder编程练习题解(一维数组和二维数组)
一维数组和二维数组 第1关:排序问题 任务描述 本关任务:将十个数进行从大到小的顺序进行排列. 输入 输入十个整数. 输出 以从大到小的顺序输出这个十个数. 测试说明 样例输入: 1 2 3 4 5 ...
- EDUCoder编程练习题解(字符数组)
第1关:字符逆序 任务描述 题目描述:输入一个字符串,输出反序后的字符串. 输入 一行字符 输出 逆序后的字符串 测试说明 样例输入: 123456abcdef 样例输出: fedcba654321 ...
- EDUCoder编程练习题解(循环)
循环二 第1关:C循环-求平均成绩 任务描述 本关任务:编写一个程序,输入学生人数和每个人的成绩,计算平均成绩. ######注意:当输入的学生人数小于等于0时,输出平均成绩为0分! 测试说明 以下是 ...
- python之路--嵌套函数、匿名函数、高阶函数。函数的递归
嵌套函数 函数里不仅可以写代码,还可以嵌套函数 name = "小猿圈"def change():name = "小猿圈,自学编程"def change2(): ...
- 递归:若函数包含了对其自身的调用,该函数为递归的。《Python核心编程》P305...
递归:若函数包含了对其自身的调用,该函数为递归的. >>> #递归 <Python核心编程>P305 >>> def factorial(n): if ...
- python嵌套函数具体案例_python编程嵌套函数实例代码
python,函数嵌套,到底是个什么东东? 很少有人用,但是,有时确实会用: def multiplier(factor): def multiplyByFactor(number): return ...
- Python--三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数...
三元表达式 列表推导式 生成器表达式 递归与二分法 匿名函数 内置函数 一.三元表达式 name=input('姓名>>: ') res='True' if name == 'lee' e ...
- 三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数(day4)
一.三元表达式.列表推导式.生成器表达式 1.三元表达式name=input('姓名>>: ')res='SB' if name == 'alex' else 'NB'print(res) ...
最新文章
- 为什么我的Button文本被迫在Lollipop上全部大写?
- python电脑下载网址-Python
- PHP获取当前页面的网址
- mysql cluster proxy_GitHub - freedaxin/maya: a mysql cluster proxy powered by node.js
- (190)FPGA变量初始化方法initial
- python写背单词软件_python实现屏保程序(适用于背单词)
- SQL每日学习——insert into语句
- Epub,Mobi,Azw3电子书格式的区别,有什么好用的安卓epub阅读器
- thinkphp 短信api接口调用
- 锁定Excel部分单元格不能编辑,可以这样操作
- Express高效查询纯真IP库插件lib-qqwry
- android studio anr,Android ANR 分析
- 006 管理Ceph的RBD块设备
- Google Colab中把pyth3.7版本更换成python3.6(tensorflow1.13)
- distill_bert和tiny_bert
- ABB机器人画圆编程_ABB机器人使用rapid编程中问号的用法及画整圆指令
- CPU和CPU寄存器和CPU缓存和CPU内存管理器、RAM、hard disk。以及堆栈、内存映射。
- Easyui后台管理界面设计
- Matlab 将计算结果制作成 gif 动画
- 小程序日历控件分享 按月传值显示