c语言用递归方法求cmn,小论c语言递归与递推

本文探讨了递归和递推在算法设计中的应用,指出两者之间的相似点和区别。通过阶乘、捕鱼问题、平面分割等实例展示了递推的解决方法,并通过计算组合数、阶乘及汉诺塔问题阐述了递归的运用。递推通常使用循环解决,而递归则是函数自我调用来解决问题。虽然递归代码简洁,但递推在效率上更优,适合处理大规模问题。
摘要由CSDN通过智能技术生成

递归和递推都是算法设计中的难点,算法又十分相近,很多和我一样学生误认为是一回事,非常容易混淆。其实它们之间既有相似点,又有明显的区别。

递推一般用循环来解决,从已知条件到未知逐渐接近结果;

(1)将复杂运算分解为若干重复的简单运算

(2)后一步骤建立在前一步骤之上

(3)计算每一步骤的方法相同

(4)从开始向后计算出结果

(5)使用循环结构,通过多次循环逐渐逼近结果

递归一般自己调用自己,从未知到已知,把规模大的、较难解决的问题变成规模较小的、易解决的同一问题。规模较小的问题又变成规模更小的问题,并且小到一定程度可以直接得出它的解,从而得到原来问题的解。

(1)每一次递归都缩小问题规模,直到问题足够小

(2)使用选择分支语句

(3)从后往开始逐步逼近

(4)达到最开始,再把初始值带入往后逐一求解

下面通过例子逐个介绍。

递推:

一。 解阶乘   n! = 1*2*3*4*....*(n-1)*n.

fun(int n)

{

long s=1;

int i;

for(i=1;i<=n;i++)

s=s*i;

return s;

}

二。捕鱼问题

A,B,C,D,E五个渔夫夜间合伙捕鱼,,第二天清A先醒来,他把鱼均分五份,把多余的一条扔回湖中,便拿了自己的一份回家了,B醒来后,也把鱼均分五份,把多余的一条扔回湖中,便拿了自己的一份回家了,C,D,E也按同样方法分鱼。问5人至少捕到多少条鱼?

这也是一个递推问题,递推关系式为   F(n+1) = F(n)*5/4+1  (i = 1,2,3,4)  F(5)即捕鱼的总数

#include

int main()

{

int i, n, f[5], flag;

flag = 1;

n = 1;

while (flag == 1)

{

f[0] = 5*n+1;

flag = 0;

for (i=1; i<5; i++)

{

if (f[i-1]%4!=0)<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值