我的方法rand2()
随机returns 0 or 1
。
我正在尝试创建一个方法
rand3()
将使用rand2()
和return 0,1,2
概率相等。
我提出了一个递归解决方案,它考虑了0,1。
的4种组合总而言之,我编写了这个函数,有超过1个基本案例,希望它能运作。
但似乎重复功能不能有多个基本情况。
这是我的代码:
public static int rand3(){
String str = "";
str+= rand2();
str+= rand2();
System.out.println(str);
if(str=="00")
return 0;
else if(str=="11")
return 1;
else if( str=="01")
return 2;
else
return rand3();
}
我错过了什么?
答案 0 :(得分:0)
我不太明白为什么你需要递归(除非它当然是学术练习)。只需将if
块包装在一个循环中,然后在前三个备选方案中的任何一个中退出循环,让第四个重新运行循环。
请注意,您还需要在循环中包含str
的分配。
答案 1 :(得分:0)
但似乎重复功能不能有多个基本情况。
这是不正确的。递归函数可以根据需要包含任意数量的基本情况。 (并且一些递归函数肯定需要不止一个;例如递归的斐波纳契函数。)
总而言之,我写了这个函数,有超过1个基本案例,希望它可以工作。
是什么让你认为它不起作用?
通过一些思考,您可以重构该代码,以便只有一个基本案例。
提示:rand2()返回一个INTEGER ...你可以对整数执行ADDITION和MULTIPLICATION