为了账号安全,请及时绑定邮箱和手机立即绑定

java 递归问题

java 递归问题

慕码人8056858 2019-03-13 18:15:24
数据结构与算法分析的课后习题编写带有下列声明的例程:public void permute( String str );private void permute( char [] str, int low, int high );第一个例程是驱动程序,它调用第二个例程并显示String str中的字符的所有排列。如果str是"abc",那么输出的串则是abc,acb,bac,bca,cab和cba。第二个例程使用递归。答案如下:public class Permute{public void permute ( String str ){    permute (str.toCharArray (), 0, str.length ());    String tmp = new StringBuilder ().append (str).reverse ().toString ();    permute (tmp.toCharArray (), 0, tmp.length ());}private void permute ( char[] str, int low, int high ){    if (low == high)    {        return;    }    String result = "";    for ( int i = low; i < high; i++ )    {        result += str[i];    }    if (result.length () < str.length)    {        int count = str.length - result.length ();        for ( int i = 0; i < count; i++ )        {            result += str[i];        }    }    System.out.println (result);    permute (str, ++low, high);}public static void main ( String[] args ){    Permute permute = new Permute ();    permute.permute ("abc");}}上面的代码,虽然也是方法自己调用自身,但感觉permute (str, ++low, high);这样的调用其实用for循环就能写出来,这个应该不能算是递归吧,求更好的递归解法
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

改为迭代试试,java的递归默认好像就2万多次


查看完整回答
反对 回复 2019-04-16
  • 3 回答
  • 0 关注
  • 535 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信