加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 变量嵌套for循环

发布时间:2020-12-16 10:46:15 所属栏目:百科 来源:网络整理
导读:我试图找出如何使用递归来执行n级嵌套for循环. 例如,如果n = 3,则会有3个“级别” for(z=0;z6;z++){ for(y=0;y6;y++){ for(x=0;x6;x++){ if (z+y+x==f){ //do something } } }} 等等. 我似乎无法弄清楚如何将if循环放在最后一个for循环中以及如何从if语句访
我试图找出如何使用递归来执行n级嵌套for循环.
例如,如果n = 3,则会有3个“级别”

for(z=0;z<6;z++){
   for(y=0;y<6;y++){
      for(x=0;x<6;x++){
         if (z+y+x==f){
            //do something
         } 
      }
   }
}

等等.

我似乎无法弄清楚如何将if循环放在最后一个for循环中以及如何从if语句访问先前for循环的变量.我知道变量嵌套循环的问题已经被问了很多次,我已经查看了所有这些.但似乎没有人帮助我.

有人能提出一种简单的方法来使用递归来实现这一点,请记住我仍然是c的初学者,指出我正确的方向吗?

用例如下:

Write a program to input the number of dice m. The program will output the total number of possible cases,the number of possible cases for each possible n and the n with the highest probability. Note: only one input m is read in. n is computed by the program

Example if user enters m=2 then program should output

The total number of possible cases is 36.
The possibilities are
2 1
3 2
4 3
.
.
.
12 1

解决方法

这是普通老C的一个例子.首先,我为每个维度创建一个名为maxes的范围向量.如果所有索引的总和是2,那么我打印做了一些事情.
在示例中,I循环z从0到1,y从0到2,x从0到3

你可以肯定让它更整洁.

开始:

#include <iostream>
#include <vector>
using namespace std;

int f(){ 
    return 2 ;
}

void inner(int depth,vector<int> & numbers,vector<int> & maxes){
  if (depth>0){
     for(int i=0;i<maxes[depth-1];i++){
        numbers[depth-1]=i;
        inner(depth-1,numbers,maxes) ;
     }
  }else{
     // calculate sum of x,y,z:
     cout << "values are ";
     for(int i=0;i<numbers.size();i++){
        cout <<numbers[i]<<" ";
     }
     int thesum(0);
     for(int i=0;i<numbers.size();i++){
        thesum+=numbers[i];
     }
     if (thesum==f()){
        cout << "did something! ";
     }
     cout<<endl;
   }
}

void donest(){
   vector<int>  numbers;
   numbers.resize(3);
   vector<int>  maxes;
   maxes.push_back(4);
   maxes.push_back(3);
   maxes.push_back(2);
   inner(numbers.size(),maxes);
}

int main(){
   donest();
}

结果:

values are 0 0 0 
values are 1 0 0 
values are 2 0 0  did something! 
values are 3 0 0 
values are 0 1 0 
values are 1 1 0  did something! 
values are 2 1 0 
values are 3 1 0 
values are 0 2 0  did something! 
values are 1 2 0 
values are 2 2 0 
values are 3 2 0 
values are 0 0 1 
values are 1 0 1  did something! 
values are 2 0 1 
values are 3 0 1 
values are 0 1 1  did something! 
values are 1 1 1 
values are 2 1 1 
values are 3 1 1 
values are 0 2 1 
values are 1 2 1 
values are 2 2 1 
values are 3 2 1

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读