请教如何做到可变N层嵌套for循环?

dickld 2007-08-02 05:48:49
N是一个输入值,可以从1到20之间的任何一个整数。如何做到这样的一个N层嵌套循环?
这个功能用递归可以实现,但是效率相当低。请各位高手有没有直接用for 循环实现的方法!
谢谢先!
...全文
1287 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
HW121 2007-08-09
  • 打赏
  • 举报
回复
typedef void (*cfun)(int *i);

void circle(int *c, int n, cfun fun) // c 为n重循环的循环数的数组
{
int *is = new int [n]; // new n个循环变量空间
memset(is, 0, sizeof(int)*n); // 置n个循环变量为0
int i=0;
while(i<n)
{
func(is); // 循环里面该做事情
for(i = 0; ++is[i] >= c[i]; i++) // 计数加1后如果大于等于i个循环变量
is[i] = 0; // 则清0,进位
}
}
dickld 2007-08-07
  • 打赏
  • 举报
回复
谢谢各位的答复。我最终参考两位关于算法改进的回复,各给于10分!
www_adintr_com 2007-08-03
  • 打赏
  • 举报
回复
用堆栈模拟递归
ludismd 2007-08-03
  • 打赏
  • 举报
回复
能写成递归的形式就好办了。再自定义一个栈,把递归转成循环。递归只用于算法描述,相对正式的实现,函数递归调用是应该抛弃的。天知道它会不会导致栈溢出呀!
taodm 2007-08-03
  • 打赏
  • 举报
回复
递归。
“效率相当低”只是基于你的猜测。
uoyevoli 2007-08-02
  • 打赏
  • 举报
回复
递归吧.
chinacreator 2007-08-02
  • 打赏
  • 举报
回复
我以前也有用多循环的时候,最后发现其实是自己算法没有想好.建议楼主好好想从算法上考虑,不要使用多嵌套循环.如果没有好的方法,可能递归是最好的方法
iambic 2007-08-02
  • 打赏
  • 举报
回复
先确定你的循环复杂度。

一、递归。递归没有你想象中的那样低效。
二、模拟多进制。
三、改进你的算法。有这样的需求,往往是你误用了循环。
jxlczjp77 2007-08-02
  • 打赏
  • 举报
回复
貌视不行,要是N能在编译器知道的话倒是有机会。
等高手来解答
rsp19801226 2007-08-02
  • 打赏
  • 举报
回复
我不太明白你想用这个来做什么,不过提个思路:最外用个while循环,当循环完一层时N--;

65,199

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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