java递归函数返回值求助
发布时间:2025-05-20 15:32:02 发布人:远客网络
一、java递归函数返回值求助
是的,这段代码中的递归调用只会返回第一次的返回值。如果你想得到800*的结果,可以修改代码,使得第二次递归调用的结果被正确地返回。具体地,你可以在第二次递归调用结束之后,将结果返回到上一层递归调用,并在第一次递归调用结束之后将结果返回。修改后的代码如下:
String deal(String s1, String s2){ if(s1!= null){ if(contact(s1.charAt(s1.length()- 1))== 1){
s1= s1.substring(0, s1.length()- 1);
s1= deal(s1, s2);//递归调用并将返回值赋值给s1
return s1;//将结果返回到上一层递归调用
int contact(char ch){ if(Character.isDigit(ch)|| ch=='*'|| ch=='.'|| ch=='-') return 1; if(ch=='+'|| ch=='/') return 2; return 0;
}String str= deal("800-","*");//返回的结果为800*
二、帮忙讲下java中递归和对象的引用的方法
1、函数的重载就是指通过同一个方法名,传入不同的参数,达到不同的目的,函数的重载是面向对象语言的基本特征,重载的方法完成的功能都是基本相同的。
2、函数的重载只需要也必须满足参数列表不同,如参数类型、个数、顺序!
3、public int m(int i,String s)都可以说是重载。注意:只有返回类型是不能区别重载方法的!
4、递归指的是,一个函数不断引用自身,直到引用的唯一已知对象时止的过程。
5、使用递归解决问题,思路清晰,代码少。
6、归函数可能用尽所有可用的资源(如系统内存、堆栈空间等等)。每次递归函数调用自身(或调用另一个函数,而另一个函数又调用原来的函数),递归函数就会占用一些资源。当递归函数退出时,就会释放这些资源,但是函数的递归层次过多,就会用尽所有可用的资源。发生这种情况时,就会引发异常。
7、因此,谨慎设计递归函数是非常重要的。如果怀疑可能出现递归过多(或无限递归)的情况,则设计函数时就应加入计算函数调用其自身的次数的功能,并设置调用次数限制。如果函数调用自身的次数超过阈值,则函数可以自动退出。迭代的最大次数的最佳取值取决于递归函数。
三、java中递归算法是什么怎么算的
1、Java递归算法是基于Java语言实现的递归算法。递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法表示问题的解。递归往往能给我们带来非常简洁非常直观的代码形式,从而使我们的编码大大简化,然而递归的思维确实跟我们的常规思维相逆的,通常都是从上而下的思维问题,而递归趋势从下往上的进行思维。
2、【2】在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
3、【3】递归算法代码显得很简洁,但递归算法解题的运行效率较低。所以不提倡用递归设计程序。
4、【4】在递归调用的过程中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。
5、【5】在做递归算法的时候,一定把握出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口就是一个条件,当满足了这个条件的时候我们就不再递归了。
6、}
publicclassTestFactorial{
7、publicstaticvoidmain(String[]args){
8、//TODOAuto-generatedmethodstub
9、Factorialfactorial=newFactorial();
10、System.out.println("factorial(5)="+factorial.fact(5));
11、}
代码执行流程图如下: