gpt4 book ai didi

java - 当存在 2^n 条件时从递归函数返回的更好方法

转载 作者:行者123 更新时间:2023-12-01 22:05:16 25 4
gpt4 key购买 nike

假设我有n = 3 boolean变量 -- a , bcJava .

这些变量总共可以有 8 (2^n = 2^3)组合。

这些条件用于确定return recursive 中的声明功能如下:

static int recursiveFunc(int x){

boolean a, b, c;

a = getBoolVal(x);
b = getBoolVal(x + 1);
c = getBoolVal(x + 2);

if(a == true && b == true && c == true) //7
return recursiveFunc(x + 1) + recursiveFunc(x + 2) + recursiveFunc(x + 3);

else if(a == true && b == true && c == false) //6
return recursiveFunc(x + 1) + recursiveFunc(x + 2);

else if(a == true && b == false && c == true) //5
return recursiveFunc(x + 1) + recursiveFunc(x + 3);

else if(a == true && b == false && c == false) //4
return recursiveFunc(x + 1);

else if(a == false && b == true && c == true) //3
return recursiveFunc(x + 2) + recursiveFunc(x + 3);

else if(a == false && b == true && c == false) //2
return recursiveFunc(x + 2);

else if(a == false && b == false && c == true) //1
return recursiveFunc(x + 3);

else //0
return 0;

}

static boolean getBoolVal(int x){

if(some condition with respect to x)
return true;

else
return false;

}

正如您所看到的,随着n值的增加,条件的数量将变得相当长。 .

但是,可以在 n + 2 中轻松生成返回语句。步骤(而不是 2^n )如下:

String returnStat = "";

if(a == true)
returnStat += "recursiveFunc(x + 1) + ";

if(b == true)
returnStat += "recursiveFunc(x + 2) + ";

if(c == true)
returnStat += "recursiveFunc(x + 3) + ";

if(returnStat == "")
returnStat = "0";

else
returnStat = returnStat.substring(0, returnStat.length() - 3); //removing extra " + "

无论如何我可以返回returnStat作为一个声明?也许,类似——

return stringToCode(returnStat);

如果没有,如何克服这种情况?

最佳答案

recursiveFunc 返回一个 int,因此只需将 int 加起来即可:

int result = 0;

if (a)
result += recursiveFunc(x + 1);
if (b)
result += recursiveFunc(x + 2);
if (c)
result += recursiveFunc(x + 3);

return result;

关于java - 当存在 2^n 条件时从递归函数返回的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32919863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com