概述
#include <stdio.h>
#include<stdlib.h>
int yuesf();
int buyu();
int taozi();
void main()
{
int choice;
while(1)
{
printf("nnn");
printf(“递推法应用n”);
printf("n");
printf(" 1.约瑟夫问题n");
printf(" 2.输出渔夫至少捕到多少条鱼 n");
printf(" 3.输出猴子第一天摘了多少个桃子n");
printf(" 0.退出n");
printf("n");
printf("*****************************************************n");
printf(“please choice(0-3):”);
scanf("%d",&choice);
switch(choice)
{ case 0: exit(0); // 头文件定义 <stdlib.h>,结束程序
case 1: // yuesf() ;break;
case 2: // buyu() ;break;
case 3: // taozi();
break;
}
}
}
//约瑟夫问题
int yuesf()
{
int n, m, i, s=0;
system(“cls”);
printf (“N M = “);
scanf(”%d%d”, &n, &m);
for (i=2; i<=n; i++)s=(s+m)%i;
printf (“最后的胜利者: %dn”, s+1);
return 0;
}
//输出渔夫至少捕到多少条鱼
int fish(int n, int x)
{
if((x-1)%5 == 0)
{
if(n == 1)
return 1; /递归出口/
else
return fish(n-1, (x-1)/54); /递归调用/
}
return 0; /x不是符合题意的解,返回0/
}
int main()
{
int i=0, flag=0, x;
do
{
i=i+1;
x=i5+1; /x最小值为6,以后每次增加5/
if(fish(5, x)) /将x传入分鱼递归函数进行检验/
{
flag=1; /找到第一个符合题意的x则置标志位为1/
printf(“五个人合伙捕到的鱼总数为%dn”, x);
}
}
while(!flag); /未找到符合题意的x,继续循环,否则退出循环/
return 0;
}
//输出猴子第一天摘了多少个桃子
int taozi()
{
int peach = 0;//桃子总数
int rest = 1;//第10 天只剩一个桃子
int day = 0;
for(day = 9; day > 0; day–)
{
peach = (rest + 1) * 2;//每天的桃子总数是后一天剩余桃子加1乘2
rest = peach;
}
printf(“猴子第一天一共摘了%d个桃子n”,peach);
system(“pause”);
return 0;
}
本人是小白一枚,程序调试许久还是有错误,麻烦各位大佬帮忙看一看!
最后
以上就是怡然猫咪为你收集整理的递推法应用,麻烦大家看看哪里有问题的全部内容,希望文章能够帮你解决递推法应用,麻烦大家看看哪里有问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复