如何转换为嵌套循环到一个递归函数? [英] How to convert nested for loops into a recursive function?

查看:190
本文介绍了如何转换为嵌套循环到一个递归函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 用于:(a [9] = 0;一个[9]&下; 16;一个[9] ++)用于:(a [8] = 0;一个[8]下; 16;一个[8] +)用于:(a [7] = 0;一个[7]所述; 16;一个[7] +)用于:(a [6] = 0;一个[6]所述; 16;一个[6] +)用于:(a [5] = 0;一个[5]&下; 16;一个[5] ++)用于:(a [4] = 0;一个[4]&下; 16;一个[4] +)用于:(a [3] = 0;一个[3]所述; 16;一个[3] +)用于:(a [2] = 0;一个[2]所述; 16;一个[2] ++)用于:(a [1] = 0;一[1]; 16;一个[1] ++)用于:(a [0] = 0;一个[0]&下; 16;一个[0] ++)我++;


解决方案

以下逻辑将帮助你转换一个嵌套循环递归函数。但不要加那么多嵌套在$ C $ 循环Ç不必要的。性能需求,甚至在写小程序,可以考虑一下。

  INT I = 0; //使其作为全局变量
...
无效FUNC(int类型的[],INT指数)
{
   用于:(a [索引] = 0;一个[索引]< 16; [指数] ++)
   {
       如果(索引!= 0)
       {
           FUNC(一,(指数 - 1));
       }
       其他
       {
           我++;
       }
   }
}

for(a[9]=0;a[9]<16;a[9]++)

for(a[8]=0;a[8]<16;a[8]++)

for(a[7]=0;a[7]<16;a[7]++)

for(a[6]=0;a[6]<16;a[6]++)

for(a[5]=0;a[5]<16;a[5]++)

for(a[4]=0;a[4]<16;a[4]++)

for(a[3]=0;a[3]<16;a[3]++)

for(a[2]=0;a[2]<16;a[2]++)

for(a[1]=0;a[1]<16;a[1]++)

for(a[0]=0;a[0]<16;a[0]++)

i++;

解决方案

Below logic will helps you for converting a nested for loop to a recursive function. But don't add so much nested for loop in code unnecessarily. Performance needs to be consider even while writing small programs.

int i = 0; //make it as global variable
...
void func(int a[], int index)
{
   for (a[index] = 0; a[index] < 16; a[index]++)
   {
       if (index != 0)
       {
           func(a, (index - 1));
       }
       else
       {
           i++;
       }
   }
}

这篇关于如何转换为嵌套循环到一个递归函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆