Как работает рекурсия? - C#
Формулировка задачи:
Помогите разобраться, не понимаю до конца как работает рекурсия в связке с субстринг...
Вопрос: Почему при условии if (str.Length > 1) не выводит последнею букву???
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Substring
{
class Rek
{
public void DisplayReverse(string str)
{
if (str.Length > 0) ///При длине строки в 1-цу, 2-ой аргумент сабстринг будет равен 0
DisplayReverse(str.Substring(1, str.Length - 1));
else
return;
Console.Write(str[0]);///Как я думал (неправильно), первый вывод в рекурсии должен произойти при длине строки в
/// в один символ. Почему при условии if (str.Length > 1) не выводит последнею букву???
}
}
class Program
{
static void Main(string[] args)
{
string str = "This is a";
Console.WriteLine(str.Substring(1, str.Length - 1));
Console.WriteLine(str[0]);
Console.WriteLine(str.Substring(1, str.Length - 9));
Console.WriteLine("Lengh is "+ (str.Length-9));
Console.WriteLine(str[0]);
char c = str[0];
Console.WriteLine("Char c="+c);
string f = "F";
////Console.WriteLine("String F is Substringed from 1 to 0(1-1) "+f.Substring(1, str.Length - 1)); не работает по
//////понятным причинам
Rek d = new Rek();
Console.WriteLine("\n String is\n" + str + "\nReversed string is ");
d.DisplayReverse(str);
Console.ReadKey();
}
}
}Решение задачи: «Как работает рекурсия?»
textual
Листинг программы
Console.Write(str[0]);//не моё