cea*_*lex 1 java recursion tail-recursion factorial fibonacci
我无法理解尾递归的概念,我想为类似斐波那契的函数制作一个尾递归版本, p1= n-3 , p2= n-2 , fx( p1 ) + fx( p2 ) 到目前为止是我想出的,但我不知道这是否是正确的方法,有人可以帮助我,任何帮助将不胜感激 p1= n-3 , p2= n-2 Long doCalc( long n ) { return n = = 0 ? 0 : ( n == 1 ? 1 : ( n == 2 ? 1 : (make( p1 ) + make( p2 )) ) ); }
代码输出正确的结果
但是当我实现尾递归时,我的方法是分裂和征服,但它不起作用并且输出是错误的
Long factor3(Long n, Long a)
{
if( n == 0){
return 0l;
} else if( n == 1 || n == 2) {
return a;
}
return factor3(p1, n + a);
}
Long factor2(Long n, Long a)
{
if( n == 0){
return 0l;
} else if( n == 1 || n == 2) {
return a;
}
return factor2(p2, n + a);
}
Run Code Online (Sandbox Code Playgroud)