简化C For Loop

weixin_38080567 2019-09-12 12:07:41
目前我有以下代码: for(int i = 0; i < 4; i++){ cout << rowNo[i] << endl; } for(int i = 0; i < 4; i++){ for(int j = 0; j < 4; j++){ cout << rowNo[i] << '.'; cout << rowNo[j] << endl; } } for(int i = 0; i < 4; i++){ for(int j = 0; j < 4; j++){ for(int k = 0; k < 4; k++){ cout << rowNo[i] << '.'; cout << rowNo[j] << '.'; cout << rowNo[k] << endl; } } } for(int i = 0; i < 4; i++){ for(int j = 0; j < 4; j++){ for(int k = 0; k < 4; k++){ for(int l = 0; l < 4; l++){ cout << rowNo[i] << '.'; cout << rowNo[j] << '.'; cout << rowNo[k] << '.'; cout << rowNo[l] << endl; } } } } 其中rowNo []是一个数组{1,2,3,4} 我想知道两件事: >这可以简化,所以可能会进入某种递归循环?>然后,这可以用于大小为N的数组吗?
...全文
31 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38108514 2019-09-12
  • 打赏
  • 举报
回复
您实际上是在尝试使用数字{1,2,3,4}打印在base4中编码的数字.要实现它,您只需要定义一个递增1的函数.我建议在打印和基数的数量方面的通用解决方案.和其他人一样,我使用数字表示“空数字”,我使用零表示非常方便. 完整源代码: #include <iostream> #include <vector> bool increment_basep(std::vector<int>& number, int p) { int i = 0; while(i < number.size() && number[i] == p) { number[i] = 1; ++i; } if(i >= number.size()) return false; ++number[i]; return true; } void print_vect(std::vector<int>& number) { for(int i = number.size() -1 ; i >= 0; --i) { if(number[i] != 0) std::cout << number[i]; } std::cout << std::endl; } int main() { int n = 4; int p = 4; std::vector<int> num4(n); std::fill(num4.begin(), num4.end(), 0); while(increment_basep(num4, p)) { print_vect(num4); } return 0; } 无论计算是否溢出,增量返回.当我们溢出时,我们知道我们需要停下来.

435

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧