我们可以为递归函数提供多少基本情况?

时间:2016-06-28 06:48:48

标签: java recursion random

我的方法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();
    }

我错过了什么?

2 个答案:

答案 0 :(得分:0)

我不太明白为什么你需要递归(除非它当然是学术练习)。只需将if块包装在一个循环中,然后在前三个备选方案中的任何一个中退出循环,让第四个重新运行循环。

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

答案 1 :(得分:0)

  

但似乎重复功能不能有多个基本情况。

这是不正确的。递归函数可以根据需要包含任意数量的基本情况。 (并且一些递归函数肯定需要不止一个;例如递归的斐波纳契函数。)

  

总而言之,我写了这个函数,有超过1个基本案例,希望它可以工作。

是什么让你认为它不起作用?

通过一些思考,您可以重构该代码,以便只有一个基本案例。

提示:rand2()返回一个INTEGER ...你可以对整数执行ADDITION和MULTIPLICATION