怎么把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;
}
一次,直到最后一张牌;然后,从第 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和自身在内的话只有平方数是奇数个因子
判断每个数的因子数
含1和自身在内的话只有平方数是奇数个因子
作者: keeya0416 发布时间: 2011-12-13





作者: abc_key 发布时间: 2011-12-13
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28