递归函数有多少个基本情况?

问题描述:

我有一个方法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()返回整数...你可以对整数加法和乘法

+0

'RAND2()+ RAND 2();这个等式给出了1 0 2 1不唯一。但是2 * rand2()+ rand2();这一个给出了0 1 2 3唯一合适的基本情况是'if(randSum

+0

是的。这就是我暗示的。 –

我不太明白你为什么需要递归(除非它是一门学术课程)。只需将if块封装在一个循环中,并在前三个选项中的任意一个中跳出循环,而让第四个替代循环在循环中重新运行。

请注意,您还需要在循环中包含str的分配。