文章目录

  • 一、递归算法
  • 二、和式分解

一、递归算法

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语言经典递归算法之和式分解相关推荐

  1. c语言 swap交换函数_C语言经典100题(14)

    1 上期答案揭晓 首先给大家看看上一篇文章C语言经典100题(13)中第三部分编程题的答案: #includeint main(){ int i,x,y,z; for(i=100;i<1000; ...

  2. C语言经典例19-完数

    目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程找出1000以内的所有完数. 因子:假如整 ...

  3. C语言经典算法 11-20

    C语言经典算法 11-20 十一.求最大公约数和最小公倍数 十二.统计字符串数字,字母,符号的各个数量 十三.2+22+222+..... 十四.完数 十五.小球反弹问题 十六.猴子吃桃问题 十七.求 ...

  4. C语言经典算法 1-10

    目录 一.排列组合题 二.区间题 三.判断平方数相关 四.给你一个年月日判断是第几天 五.将3个数由小到大排序 六.九九乘法表 七.兔子繁殖数列 八.判断素数 九.水仙花数 十.因数分解 一.排列组合 ...

  5. c++ 经典代码_C语言经典100题(31)

    1 上期答案揭晓 首先给大家看看上一篇文章C语言经典100题(30)中第三部分编程题的答案: #include int main( ){ long ge,shi,qian,wan,x; printf( ...

  6. 新颖的c语言题目,新颖版c语言经典习题100例(全面面)

    新颖版c语言经典习题100例(全面面) (66页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实用文档C语言习题100例(最新整理版) ...

  7. C语言——经典200道实例【基础例题100道——进阶例题100道】

    目录: ===============================基础例题100道=============================== 1.输出 "Hello, World!& ...

  8. C语言经典例题100道(没错,就是你要找的那个)

    C语言经典例题100道(没错,就是你要找的那个) 希望可以帮助到你,加油!!! [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位 ...

  9. acm水仙花数java,水仙花数之C语言经典案例分析

    水仙花数之C语言经典案例分析 一.[什么是水仙花数] 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI) ...

最新文章

  1. 计算机网络tcp传送,计算机网络基础课程—传输控制协议(Tcp)
  2. 一看就懂的感知机算法PLA
  3. 预编译指令与相关宏小结
  4. airpods耳机敲击没反应_华强北airpods2 华强北三代耳机 airpodspro可调通透 主动降噪 定位改名 苹果airpodspro...
  5. 截图识字工具下载使用
  6. 如何理解 inode
  7. Centos下载地址
  8. spreadsheet js中创建下拉列表_JS 中创建自定义排序方法
  9. 物业计算机管理系统论文,物业小区管理系统 计算机专业毕业论文.doc
  10. 微机原理与接口技术模拟试题微型计算机中主要包括,微机原理与接口技术模拟试题...
  11. 顶像滑块/通用滑块识别/文字点选/图标点选/推理/OCR文字识别
  12. 带你白嫖程序带宽限制命令Trickle
  13. IT行业考证规划,从年薪3万到30万
  14. 计算机系统重新之后为啥没声音,电脑重装系统后没声音怎么办 电脑重装系统后没声音解决方法...
  15. 毕业设计 单片机智能温控农业大棚系统 - 物联网 嵌入式
  16. C文件中的中文乱码 notepad2
  17. ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)
  18. 学计算机编程还是学奥数,小学生家长担心奥数被封 孩子改学编程冲名校
  19. dream weaver_具有定制汇编程序,Weaver和运行时的可插拔知识
  20. 小学计算机课在教室怎么上,小学计算机教室管理制度

热门文章

  1. css3仿天气风车旋转
  2. php str_replace替换特殊字符
  3. 毫秒转换友好的显示格式【刚刚、几秒前,几小时,几天前(3天内) 时间格式化】
  4. INNER JOIN连接两个表、三个表、五个表的SQL语句
  5. java 大型互联网架构_分享一些大型互联网架构常用的高端技术
  6. android 布局颜色设置颜色设置,怎么在Android中利用view设置布局颜色
  7. c语言time.h时区不对,用C语言修改系统时区,发现一堆问题,请各位大侠不吝赐教。...
  8. 印江中学2021高考成绩查询,贵州印江中学2021年排名
  9. JS 打印 data数据_小程序导出数据到excel表
  10. java 可插拔注解_20200311 8. 注解和可插拔性