Csharp/CSharp Tutorial/Class/Method Recursion
Содержание
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