第12卷 第3期 软 件 导 刊 VO1.12NO.3
2O13年 3月 SoftwareGuide Mar.2013
递推和递归方法在 C语言程序设计中的应用
张春燕 ,沈 漪
(无锡科技职业学院,江苏 无锡 214028)
摘 要 :递推和递归f--I题是计算机高级语言程序设计课程中的重点和难点f-I题。以卖票问题为例,对递推和递归方
法进行 了探讨 ,并通过 C程序进行 了验证 。
关键词 :递推;递归;c程序
中图分类号 :TP311.5 文献标识码 :A 文章编号 :1672—7800(2013)003—0057—01
找 出去 ,仍会 出现找不开钱 的局面 ,所 以f(m,n)一0。
1 递归和递推算法 (3)其它情况 。m+n个人排 队购票 ,第 m+n个人站
在第 m+n--1个人 的后面 ,则第 m+n个人的排队方式可
递归作为一种算法在程序设计语言中广泛应用。它是调 由两种情况获得 :①第 m+n个人手持 100元 的钞票 ,则
用一个函数的过程中又出现直接或者间接地调用该函数本身。 在他之前 的m+n一1个人 中有 m个人手持 5O元 的钞票 ,
递归是计算机科学的一个重要概念,递归的方法是程序设计中 有 n~1个人手持 1o0元 的钞票 ,此种情况共有 f(m,n一
有效的方法 ,采用递归编写程序能使程序变得简洁和清晰。 1);②第 m+n个人手持 5O元 的钞票 ,则在他之前 的m十
递推算法是一种用若干步可重复的简运算 (规律)来 n--1个人 中有 m一1个人手持 5O元 的钞票 ,有 n个人手
描述复杂问题 的方法。递推是序列计算机 中的一种常用 持 100元 的钞票 ,此种情况共有 f(m一1,n)。
算法 。递推法的特点是从一个 已知的事实出发 ,按照一定 由加法原理得到 f(m,n)的递推关系 :
规律推 出下一个事实,再从这个新 的已知事实 出发 ,再 向 f(m ,n)一 f(nl,n一 1)十f(m 一 1,n)
下推 出一个新的事实 。 初始条件 :
当 m
2 问题提 出 当 n一0时 ,f(m,n)一1
一 场球赛开始前,售票工作正在紧张进行中,每张球 4 购票排队递归程序实现
票为 5O元 ,现有 m+n个人排 队等待购票 ,其 中有 120.个人
手持 50元 的钞票 ,另外 n个人手持 100元 的钞票 。假设 longf(intj,inti)
开始售票 时售票处没有零钱 ,求 出这 m+n个人排 队购 { longY;
票,使售票处不至出现找不开钱 的局面的不 同排队种数 if(i一 :0)y一 1;
(这里正整数 m、n从键盘输入)。 elseif(j
这个 问题用一般 的解决方法非常麻烦 ,下面用递归和 elsey=f(j一1,i)十f(j,i一1);/*实施递归 */
递推方法解决 。 retur