Quick actions

cmd+k|ctrl+k

Navigation

Languages

Recursion

Snippet info

Language

Dart

Visibility

public

Author

obihenry578

Created

2025-02-23T05:50:27.290973Z

Updated

2025-02-23T07:07:43.333918Z



// 1. identify the base case that is the case that stops the recursion
// 2. identify the recursive case that is the case that makes the function recursive
// 3. get closer and closer and return when needed, usually 2 returns 

void main() {
    int counter = 0;
   inception(){
       print(counter);
       if(counter > 4){
           
          return print('donr') ;
       }
       counter++;
       
       return inception();
   }
   
//   write two functions that returns factorial of any number, one for recursion and the other for loop

dynamic findFactorialRecursive(number){
    // n! = n*n-1!
    if(number<2){
        return 1 ;
    }
    // print('${number*findFactorialRecursive(number-1)}');
   return  number*findFactorialRecursive(number-1);
}

 findFactorialIterative(number) {
  int answer = 1;
  // you actually no longer need the if statement because of the for loop
  // if (number === 2) {
  //   answer = 2;
  // }
  for (var i = 2; i <= number; i++) {
    answer *= i;
  }
  return print(answer);
}

 fibonacciRecursive(number) { // 0(2^n) time complexity
   if(number< 2 ){
       return number;
   }
  return fibonacciRecursive(number -1) +  fibonacciRecursive(number -2)  ;
}

 fibonacciIterative(number) {  //0(n)
     List arr = [0,1];
     for(var i = 2; i < number+1; i++){
         arr.add(arr[i-2] +arr[i -1]);
     }
     
     return arr[number];
   
}

 reverseString(str) {
    

}



 reverseStringRecursive(str) {
    List arr = [];
    
    if(str.length == 0|| str.length < 2) return str;
 
    return  str[str.length-1] + reverseStringRecursive(str.substring(0, str.length - 1)) ;

}

;

  print( reverseStringRecursive("yoyo master"));
//   inception();
}
INFO