,略有不同而已。算法构造由于从第一站出发没有任何变动,故将第二站作为始发站;函数Bus(i)为到达第i站还未上下乘客时车上人员数量;算法实现#include<stdio.h>intBus(inti)//由于从第一站出发没有任何变动,故将第二站作为始发站;{//函数Bus(i)为到达第i站还未上下乘客时车上人员数量;?intsum=0;?if(i<6)// sum=2*(Bus(i+1)+i-7);//有递归函数:Bus(i+1)=Bus(i)/2+7-i;?else return10;//由最后还剩6人推的Bus(6)=10;?returnsum;}voidmain(){?printf("发车时车上共有%d人。\n",Bus(1));?for(inti=1;i<6;i++) printf("第%d站,上来%d人,下去%d人,剩下%d人\n",i+1,(7-i),(Bus(i)/2),Bus(i+1));?getchar();}运行结果(5)猴子吃桃。有一群猴子摘来了一批桃子,猴王规定每天只准吃一半加一只(即第二天吃剩下的一半加一只,以此类推),第九天正好吃完,问猴子们摘来了多少桃子?题目分析与上题类似算法构造递推函数Monkey(i)表示第i天吃的和剩下的和;由Monkey(i+1)=Monkey(i)/2-1推得;由Monkey(9)=Monkey(9)/2+1,得出口Monkey(9)=2。算法实现#include<stdio.h>intMonkey(inti)//递推函数Monkey(i)表示第i天吃的和剩下的和;{?intsum=0;?if(i<9) sum=2*(Monkey(i+1)+1);//由Monkey(i+1)=Monkey(i)/2-1推得;?else return2;//由Monkey(9)=Monkey(9)/2+1,得出口Monkey(9)=2;