首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建多个嵌套循环

问创建多个嵌套循环
EN

Stack Overflow用户
提问于 2011-12-25 11:34:56
回答 1查看 257关注 0票数 0

我正在试图弄清楚如何有效地计算出所有可以作为某个集合的线性组合产生的数字,比如前几个丰富的数字(12,18,20,24)。问题是我现在想要处理的方法是遍历所有的数字a*12+b*18+c*20+d*24,其中和不超过100。现在我想到了两种方法。一个多重嵌套的while循环或一个while循环,它基于while循环顶部的条件递增不同的内容。我对这两种方法的问题是,我不知道在运行之前我需要多少条件或嵌套循环,因为我还不知道我将对多少不同的数字求和。有没有办法让我的程序对n个数嵌套n次,或者对n个数有n个条件。

以下是开关块的轮廓:

代码语言:javascript
复制
int count=1;
while(true){
    if(num2<smal){
        switch(count){
        case 1:
            a++;
            break;
        case 2:
            b++;
            break;
        case 3:
            c++;
            break;
        case 4: 
            d++;
            break;
      }
    }
    else {
        switch(count){
        case 1:
            if(a!=0){
                a=0;
                b++;
            }
            else{count++;}
            break;
        case 2:
            if(b!=0){
                b=0;
                c++;
                count--;
            }
            else{count++;}
            break;
        case 3:
            if(c!=0){
                c=0;
                d++;
                count--;
            }
            else{count++;}
            break;
        case 4: 
            break;
      }
  }
  //num is update here
  if(count==4){break;}


}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-25 11:43:54

我不知道你使用的是什么语言,但是如果你不知道你可能需要深入到多少层,那么你应该考虑递归(只要它不是成百上千的;你会搞砸堆栈)。

如果你不熟悉递归,你可以在这里调用函数本身。这里有一个愚蠢的例子。

代码语言:javascript
复制
Result doStuff(Stuff stuff, int level) {
    SubResult sr = null;
    if(stuff > 0) {
        sr = doStuff(stuff, level -1);
    }
    Result r = interesting_calculation(stuff, sr);
    return r;
}

递归可能很棘手,但有时它是适合这项工作的工具。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8628075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档