递归函数有多少个基本情况?
问题描述:
我有一个方法rand2()
0123h随机。递归函数有多少个基本情况?
我想创建一个方法 rand3()
将使用rand2()
和return 0,1,2
以相等的概率。
我想出了一个递归解决方案,考虑4个0,1的组合。
总而言之,我写了这个函数,有超过1个基本情况,希望它能起作用。
但似乎recusive函数不能有多个基本情况。
这里是我的代码:
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();
}
我缺少什么?
答
但似乎recusive函数不能有一个以上的基本情况。
这是不正确的。递归函数可以具有所需的基本情况。 (并且一些递归函数肯定需要多于一个函数;例如递归斐波纳契函数)。
总而言之,我写了这个函数,它有超过1个基本情况,希望它能起作用。
是什么让你觉得它不起作用?
有点想法,你可以重构该代码,以便只有一个基本情况。
提示:RAND2()返回整数...你可以对整数加法和乘法
答
我不太明白你为什么需要递归(除非它是一门学术课程)。只需将if
块封装在一个循环中,并在前三个选项中的任意一个中跳出循环,而让第四个替代循环在循环中重新运行。
请注意,您还需要在循环中包含str
的分配。
'RAND2()+ RAND 2();这个等式给出了1 0 2 1不唯一。但是2 * rand2()+ rand2();这一个给出了0 1 2 3唯一合适的基本情况是'if(randSum
是的。这就是我暗示的。 –