Dart递归是函数称为其子程序的方法。它用于通过将其划分为子部分来解决复杂问题。一次又一次地或递归地调用的函数,然后这个过程称为递归。
void main() {
int factorial(int num){
if(num<=1) { // base case
return 1;
}else{
return n*fact(n-1);
}
}
}
在上面的示例中,将基本情况定义为n <= 1,并且可以通过将较小的值更改为较小的值直到匹配基本情况来解决较大的数字值。
递归函数
递归函数与其他函数非常相似,但差异是递归调用自己。递归函数重复多次,直到返回最终输出。它允许程序员用最小的代码来解决复杂问题。
让我们了解给定数量的阶乘递归的概念。在以下示例中,我们将评估n个数字的阶乘。这是一系列乘法。
Factorial of n (n!) = n*(n-1)*(n-2)........1

让我们来看看递归语法:
void recurse() { //statement(s) recurse(); //statement(s); } void main(){ //statement(s) recurse(); //statement(s) }
让我们了解以下示例。
int factorial(int num){//递归的基本情况。 if(num<=1) {//base case return 1; }else{ return num*factorial(num-1); //函数调用本身。 } } void main() { var num = 5; //存储函数调用的结果实际上是变量。 var fact = factorial(num); print("Factorial Of 5 is: ${fact}"); }
输出:
Factorial Of 10 is: 120
在上面的示例中, factorial()是递归函数,因为它呼叫自身。当我们通过传递整数5来调用 factorial()函数时,它将通过减少数字来递归呼叫自身。
每次都会调用factorial()函数,直到它匹配基本条件,或者它等于一。它将数字乘以数字的阶乘。考虑以下对递归调用的说明。
factorial(5) # 1st call with 5 5 * factorial(4) # 2nd call with 4 5 * 4 * factorial(3) # 3rd call with 3 5 * 4 * 3 * factorial(2) # 4th call with 2 5 * 4 * 3 * 2 * 1 # return from 2nd call 120 # return from 1st call
当数字减少到1时,递归结束,并且是递归的基本条件。