Recursion 递归问题

Recursion 递归问题,recursion,Recursion,我有几个关于递归的问题。我在上课,正在复习笔记和课文,有点困惑: 1) 我说的对吗?迭代器和递归看起来非常相似 递归=一个引用自身的函数,它有一个基本情况来解决问题 迭代器:使用++或--遍历所有数据以获得一条信息 2) 什么是递归下降?是不是离基本情况越来越近了?那么什么是递归上升 3) 我们看到了这个递归示例,这让我很困惑: Product of Positive Integer from 1 to n Denoted by n! => n! = 1.2.3....(n-2).(n-1

我有几个关于递归的问题。我在上课,正在复习笔记和课文,有点困惑:

1) 我说的对吗?迭代器和递归看起来非常相似

递归=一个引用自身的函数,它有一个基本情况来解决问题

迭代器:使用++或--遍历所有数据以获得一条信息

2) 什么是递归下降?是不是离基本情况越来越近了?那么什么是递归上升

3) 我们看到了这个递归示例,这让我很困惑:

Product of Positive Integer from 1 to n
Denoted by n! => n! = 1.2.3....(n-2).(n-1).n
0! = 1 , 5! = 1.2.3.4.5 = 120, 6! = 5! . 6 = 720
n! = n . ( n – 1 )!
Definition
– If n = 0 then n! = 1
– If n > 0, then n! = n. (n-1) !

(n-1)后面为什么有感叹号?这些点是什么,比如n.(n-1)?

递归和迭代是不同的。您可以在没有递归的情况下进行迭代,而递归意味着没有迭代

让我们暂时离开递归下降。那是和我有关的

这个例子是取阶乘的数学运算。感叹号的意思是“阶乘”。点表示乘法

记得吗

0! = 1
1! = 1
2! = 2*1
3! = 3*2*1 = 3*2!
4! = 4*3*2*1 = 4*3!
等等

这是一个经典问题,用于向首次看到递归的本科生演示递归:

function factorial_recursion(n) {
    if (n <= 1) {
        return 1;
    } else {
        return n*factorial(n-1);
    }
}
函数阶乘递归(n){ if(n1){
对于(i=1;i点是乘法。使用点很容易混淆,但我们知道
5!=1*2*3*4*5
所以点必须是乘法。而且,
是表示阶乘的符号。
5!=5*4!

  • 是的,迭代和递归在某种程度上是相似的,任何递归解决方案都有一个等价的迭代解决方案,反之亦然。然而,许多问题用其中一种方法比用另一种方法更容易解决。阶乘示例在这两种方法中都很容易解决。 每当您看到一个问题如何以较小的幅度减少为同一问题的一次或多次出现时,您就可以轻松地进行递归解决。

  • 我认为递归下降是潜入递归的更深层次,而上升是相反的:从一个调用返回并接近顶层调用

  • 点代表乘法


  • 点代表乘法
    function factorial_iter(n) {
        var value = 1;
        if (n > 1) {
            for (i = 1; i <= n; ++i) {
                value *= i;
            }
        }
        return value;
    }