Csharp/CSharp Tutorial/Class/Method Recursion

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

A simple example of recursion.

A method can call itself is called recursion.


<source lang="csharp">using System;

class Factorial {

 // This is a recursive function.  
 public int factR(int n) {  
   int result;  
 
   if(n==1) return 1;  
   result = factR(n-1) * n;  
   return result;  
 }  
 
 // This is an iterative equivalent.  
 public int factI(int n) {  
   int t, result;  
 
   result = 1;  
   for(t=1; t <= n; t++) 
      result *= t;  
   return result;  
 }  

}

class MainClass {

 public static void Main() {  
   Factorial f = new Factorial();  
 
   Console.WriteLine("Factorials using recursive method.");  
   Console.WriteLine("Factorial of 3 is " + f.factR(3));  
   Console.WriteLine("Factorial of 4 is " + f.factR(4));  
   Console.WriteLine("Factorial of 5 is " + f.factR(5));  
   Console.WriteLine();  

   Console.WriteLine("Factorials using iterative method.");  
   Console.WriteLine("Factorial of 3 is " + f.factI(3));  
   Console.WriteLine("Factorial of 4 is " + f.factI(4));  
   Console.WriteLine("Factorial of 5 is " + f.factI(5));  
 }  

}</source>

Factorials using recursive method.
Factorial of 3 is 6
Factorial of 4 is 24
Factorial of 5 is 120
Factorials using iterative method.
Factorial of 3 is 6
Factorial of 4 is 24
Factorial of 5 is 120

Display a string in reverse by using recursion

<source lang="csharp">using System;

class RevStr {

 public void displayRev(string str) { 
   if(str.Length > 0)  
     displayRev(str.Substring(1, str.Length-1)); 
   else  
     return; 

   Console.Write(str[0]); 
 } 

}

class MainClass {

 public static void Main() {   
   string s = "this is a test"; 
   RevStr rsOb = new RevStr(); 

   Console.WriteLine("Original string: " + s); 

   Console.Write("Reversed string: "); 
   rsOb.displayRev(s); 

   Console.WriteLine(); 
 } 

}</source>

Original string: this is a test
Reversed string: tset a si siht

fibonacci in C#

<source lang="csharp">using System; using System.Collections.Generic; using System.Reflection; using System.Runtime.InteropServices; public class MainClass {

  public static void Main(){
     Console.WriteLine(Fibonacci(10));
  }
   static int Fibonacci(int x)
   {
       if (x <= 1)
           return 1;
       return Fibonacci(x - 1) + Fibonacci(x - 2);
   }

}</source>

89

Recursion Count

<source lang="csharp">using System; class MainClass {

  public static void Count(int InVal)
  {
     if (InVal == 0)
        return;
     Count(InVal - 1);
     Console.WriteLine("{0} ", InVal);
  }
  public static void Main()
  {
     Count(3);
  }

}</source>

1
2
3