Recursion

Run Settings
LanguageDart
Language Version
Run Command
// 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(); }
Editor Settings
Theme
Key bindings
Full width
Lines