我用for循环迭代地解决了一个问题。我想将代码转换为使用递归的if-else语句的递归算法。我试过好几次,但都没能正常工作。

double A;
int B;
double previous=1;
double answer;

double equation(double A,int B){
 for(int i=1; i<=B; i++){
  answer= (A*previous)/(i+A*previous);
  previous = answer;
 };
 return answer;
}

编辑:以下是我迄今为止所做的工作:http://pastebin.com/raw.php?i=kyeq1v5u

最佳答案

有一个公式。它是一个递归公式。它递归地定义了你的问题

equation(A, B) =
    IF(B = 1)
        A/(1+A)
    ELSE
        (A*equation(B-1)) / (B+A*equation(B-1))

编辑:psudo代码中有您的完整算法。你所要做的就是翻译成c。祝你好运。
提示:previous等于equation(A, B-1)

关于c - 如何将迭代算法转换为递归解,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11454105/

10-11 22:06
查看更多