+ -
当前位置:首页 → 问答吧 → 怎么把for循环改为递归?

怎么把for循环改为递归?

时间:2011-12-13

来源:互联网

任务:编号为 1-52 张牌,正面向上,从第 2 张开始,以 2 为基数,是 2 的倍数的牌翻
一次,直到最后一张牌;然后,从第 3 张开始,以 3 为基数,是 3 的倍数的牌翻一次,直到
最后一张牌;然后…从第 4 张开始,以 4 为基数,是 4 的倍数的牌翻一次, 直到最后一张
牌;...再依次 5 的倍数的牌翻一次,6 的,7 的 直到 以 52 为基数的 翻过,输出:这时正
面向上的牌有哪些?

  这是我写的程序:
  #include <iostream.h>
int main()
{
int data[52]; //定义数组存放1~52张牌的编号
int flag[52]; //定义数组存放牌向上、向下的标记
for(int i=1;i<=52;i++)
{
data[i-1]=i;
flag[i-1]=1; //将正面向上的牌标记为1
}
for(int j=2;j<=52;j++)
{
for(i=2;i<52;i++)
{
int r=data[i-1]%j;
if (r==0)
flag[i-1]=1-flag[i-1];
}
}
  cout<<"正面向上的牌有: ";
for(i=1;i<=52;i++)
{
if( flag[i-1]==1)
cout<<data[i-1]<<" ";
}
return 0;
}



作者: liangzhu3065   发布时间: 2011-12-13

n的平方。有个开灯的类似。

作者: g_idea   发布时间: 2011-12-13

这个可以直接计算的
判断每个数的因子数
含1和自身在内的话只有平方数是奇数个因子

作者: keeya0416   发布时间: 2011-12-13





作者: abc_key   发布时间: 2011-12-13

热门下载

更多