C语言经典递归算法之和式分解
文章目录
- 一、递归算法
- 二、和式分解
一、递归算法
1、递归
递归就是自己调用自己,它是设计和描述算法的一种有力工具,常常用来解决比较复杂的问题。
递归是一种分而治之,将复杂问题转化难为简单的问题的求解方法。
2、递归的优点
使用递归编写的程序简洁、结构清晰,程序的正确性很容易被证明,不需要了解递归调用的具体细节。
3、递归的缺点
递归函数在调用过程中,每一层调用都需要保存临时变量和返回地址、传递参数,因此递归函数的执行效率低。
二、和式分解
1、原理分析
(1)引入数组a,用来存放分解出来的和数,其中,a[k]存 放第k步分解出来的和数。
(2)递归函数应设置三个参数:第1个参数是数组名a,用来将数组中的元素传递给被调用函数;
第2个参数i表示本次递归调用要分解的数;
第3个参数k是本次递归调用将要分解出的第k个和数。
2、C语言实现和式分解
#include <stdio.h>
#define N 50
void rd(int a[], int i, int k);
void main()
{int n, a[N];printf("请输入一个正整数:n(0<=n<50):");scanf("%d",&n);a[0]= n;printf("和式分解结果:\n");rd(a,n,1);
}
void rd(int a[], int i, int k)
{int j, p;for(j=i; j>=1; j--){if(j<=a[k-1]){a[k]=j;if(j==i){printf("%d=%d",a[0],a[1]);for(p=2; p<=k; p++)printf("+%d", a[p]);printf("\n");}elserd(a, i-j, k+1);}}
}
参考文献:《The Function and Algorithm of Program Language C/C++》
C语言经典递归算法之和式分解相关推荐
- c语言 swap交换函数_C语言经典100题(14)
1 上期答案揭晓 首先给大家看看上一篇文章C语言经典100题(13)中第三部分编程题的答案: #includeint main(){ int i,x,y,z; for(i=100;i<1000; ...
- C语言经典例19-完数
目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程找出1000以内的所有完数. 因子:假如整 ...
- C语言经典算法 11-20
C语言经典算法 11-20 十一.求最大公约数和最小公倍数 十二.统计字符串数字,字母,符号的各个数量 十三.2+22+222+..... 十四.完数 十五.小球反弹问题 十六.猴子吃桃问题 十七.求 ...
- C语言经典算法 1-10
目录 一.排列组合题 二.区间题 三.判断平方数相关 四.给你一个年月日判断是第几天 五.将3个数由小到大排序 六.九九乘法表 七.兔子繁殖数列 八.判断素数 九.水仙花数 十.因数分解 一.排列组合 ...
- c++ 经典代码_C语言经典100题(31)
1 上期答案揭晓 首先给大家看看上一篇文章C语言经典100题(30)中第三部分编程题的答案: #include int main( ){ long ge,shi,qian,wan,x; printf( ...
- 新颖的c语言题目,新颖版c语言经典习题100例(全面面)
新颖版c语言经典习题100例(全面面) (66页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实用文档C语言习题100例(最新整理版) ...
- C语言——经典200道实例【基础例题100道——进阶例题100道】
目录: ===============================基础例题100道=============================== 1.输出 "Hello, World!& ...
- C语言经典例题100道(没错,就是你要找的那个)
C语言经典例题100道(没错,就是你要找的那个) 希望可以帮助到你,加油!!! [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位 ...
- acm水仙花数java,水仙花数之C语言经典案例分析
水仙花数之C语言经典案例分析 一.[什么是水仙花数] 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI) ...
最新文章
- 计算机网络tcp传送,计算机网络基础课程—传输控制协议(Tcp)
- 一看就懂的感知机算法PLA
- 预编译指令与相关宏小结
- airpods耳机敲击没反应_华强北airpods2 华强北三代耳机 airpodspro可调通透 主动降噪 定位改名 苹果airpodspro...
- 截图识字工具下载使用
- 如何理解 inode
- Centos下载地址
- spreadsheet js中创建下拉列表_JS 中创建自定义排序方法
- 物业计算机管理系统论文,物业小区管理系统 计算机专业毕业论文.doc
- 微机原理与接口技术模拟试题微型计算机中主要包括,微机原理与接口技术模拟试题...
- 顶像滑块/通用滑块识别/文字点选/图标点选/推理/OCR文字识别
- 带你白嫖程序带宽限制命令Trickle
- IT行业考证规划,从年薪3万到30万
- 计算机系统重新之后为啥没声音,电脑重装系统后没声音怎么办 电脑重装系统后没声音解决方法...
- 毕业设计 单片机智能温控农业大棚系统 - 物联网 嵌入式
- C文件中的中文乱码 notepad2
- ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)
- 学计算机编程还是学奥数,小学生家长担心奥数被封 孩子改学编程冲名校
- dream weaver_具有定制汇编程序,Weaver和运行时的可插拔知识
- 小学计算机课在教室怎么上,小学计算机教室管理制度
热门文章
- css3仿天气风车旋转
- php str_replace替换特殊字符
- 毫秒转换友好的显示格式【刚刚、几秒前,几小时,几天前(3天内) 时间格式化】
- INNER JOIN连接两个表、三个表、五个表的SQL语句
- java 大型互联网架构_分享一些大型互联网架构常用的高端技术
- android 布局颜色设置颜色设置,怎么在Android中利用view设置布局颜色
- c语言time.h时区不对,用C语言修改系统时区,发现一堆问题,请各位大侠不吝赐教。...
- 印江中学2021高考成绩查询,贵州印江中学2021年排名
- JS 打印 data数据_小程序导出数据到excel表
- java 可插拔注解_20200311 8. 注解和可插拔性