用C语言递归写该题: 有17个人围成一圈(编号为0~16),从第0号的人开始从1报数,凡是报到3的倍数的人
答案:3 悬赏:0 手机版
解决时间 2021-11-18 20:23
- 提问者网友:niaiwoma
- 2021-11-18 10:40
用C语言递归写该题: 有17个人围成一圈(编号为0~16),从第0号的人开始从1报数,凡是报到3的倍数的人
最佳答案
- 五星知识达人网友:十年萤火照君眠
- 2021-11-18 11:15
#include
int youxi(int n);
int num[17] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int main()
{
int n = 17, k;
k = youxi(17);
printf("The ID is : %d\n", k);
}
int youxi(int n)
{
int i, j =0;
if(n == 0)
return num[0];
else
{
for(i = 0; i < 17; i++)
{
if((i+1)%3!=0)
{
num[j] = num[i];//这里只是替换,没有将元素移走,要将后面的全部前移一位才行。
j++;
}
n = j;
return youxi(n);
}
}
}
我重做了一个:
#include "stdio.h"
int youxi(int *d,int start,int n)
{
int p,t;
if(n>1)
{
printf("%d ",d[start]);
for(p=start;p d[p]=d[p+1];
return youxi(d,(start+2)%(n-1),n-1);
}
else
{
return d[start];
}
}
int main()
{
int d[17];
int n, k;
for(n=0;n<17;n++)
d[n]=n;
k = youxi(d,3,n);
printf("The ID is : %d\n", k);
}
int youxi(int n);
int num[17] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int main()
{
int n = 17, k;
k = youxi(17);
printf("The ID is : %d\n", k);
}
int youxi(int n)
{
int i, j =0;
if(n == 0)
return num[0];
else
{
for(i = 0; i < 17; i++)
{
if((i+1)%3!=0)
{
num[j] = num[i];//这里只是替换,没有将元素移走,要将后面的全部前移一位才行。
j++;
}
n = j;
return youxi(n);
}
}
}
我重做了一个:
#include "stdio.h"
int youxi(int *d,int start,int n)
{
int p,t;
if(n>1)
{
printf("%d ",d[start]);
for(p=start;p
return youxi(d,(start+2)%(n-1),n-1);
}
else
{
return d[start];
}
}
int main()
{
int d[17];
int n, k;
for(n=0;n<17;n++)
d[n]=n;
k = youxi(d,3,n);
printf("The ID is : %d\n", k);
}
全部回答
- 1楼网友:人间朝暮
- 2021-11-18 14:29
是递归调用过深吧,都十几次了
不考虑时间,可以用数组存储
仔细思考,网上也有快速算法
搜“猴子选大王”就可以了
不考虑时间,可以用数组存储
仔细思考,网上也有快速算法
搜“猴子选大王”就可以了
- 2楼网友:时间的尘埃
- 2021-11-18 12:50
你这个方法好麻烦
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯