前言:
今天看官们对“编程利用递归方法求5”可能比较注重,兄弟们都想要剖析一些“编程利用递归方法求5”的相关文章。那么小编同时在网络上汇集了一些关于“编程利用递归方法求5””的相关资讯,希望姐妹们能喜欢,大家一起来学习一下吧!问题:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均 分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
分析:采用递归算法。设桃子总数为N,则
第一个猴子拿走的是M1=(N-1)/5;
第二个猴子拿走的是M2= (M1-1)/ 5 ;
第三个猴子拿走的是M3= (M2-1)/ 5 ;
依此类推,第n个猴子拿走的桃子是
M(n) = (M(n-1)-1)/5;
软件实现:
#include <stdio.h>
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) //代码优化
{
nCounter = 0;
if( f(i)!=-1 && nCounter==5)
{
printf("总共有 %d 个桃子\n",i);
break;
}
}
}
return 0;
}
VC6.0下编译输出:
~~~end~~~
标签: #编程利用递归方法求5 #递归法求5