C语言编程学习之递归法解决5猴子分桃问题

C语言是面向过程的,而C++是面向对象的                                                                                                                      C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。


问题:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均 分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

小编推荐一个学C语言/C++的学习裙【  六九九,四七零,五九六  】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

分析:采用递归算法。设桃子总数为N,则

第一个猴子拿走的是M1=(N-1)/5;

第二个猴子拿走的是M2= (M1-1)/ 5 ;

第三个猴子拿走的是M3= (M2-1)/ 5 ;

依此类推,第n个猴子拿走的桃子是

M(n) = (M(n-1)-1)/5;

软件实现:

#include

int nCounter = 0;

int f(int nNum)

{

int nTmp = nNum - 1;

if((0 == (nTmp%5)) && (nCounter < 5 ))

{

nCounter ++ ;

return f(nTmp/5*4);

}

else

return nNum;

}

int main(int argc,char *argv[])

{

for(int i=1;;i++)

{

if((i-1)%5==0) //代码优化

{

小编推荐一个学C语言/C++的学习裙【  六九九,四七零,五九六  】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

nCounter = 0;

if( f(i)!=-1 && nCounter==5)

{

printf("总共有 %d 个桃子 ",i);

break;

}

}

}

return 0;

}

VC6.0下编译输出:

小编推荐一个学C语言/C++的学习裙【  六九九,四七零,五九六  】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

这些是C/C++能做的

服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 10,532评论 0 41
  • 50道经典Java编程练习题,将数学思维运用到编程中来。抱歉哈找不到文章的原贴了,有冒犯的麻烦知会声哈~ 1.指数...
    OSET我要编程阅读 11,961评论 0 9
  • 我能说有点不习惯用手机来写文章了吗?哎,人呀,可真是个习惯性的动物。想想刚开始的时候,要用电脑登陆公众号然后写文章...
    紫菀花园阅读 2,540评论 2 1
  • I read some massage just now.I am quite shocked. It is no...
    Tiffany_的早餐阅读 2,732评论 0 0
  • 2009-12-05 04:00:42 摘自巴菲特在伯克希尔·哈撒韦2009年度股东大会上的谈话: 投资教育只需要...
    大大花生阅读 2,713评论 0 1