方法/函數(shù)7(方法的遞歸)
遞歸,說的簡(jiǎn)單一些就是方法它自己調(diào)用自己。從作用上來說有點(diǎn)像是循環(huán)。
錯(cuò)誤示范:
static void Tellstory()
{
? ? ? ?int i = 0;
? ? ? ?Console.WriteLine("從前有座山");
? ? ? ?Console.WriteLine("山里有座廟");
? ? ? ?Console.WriteLine("廟里有個(gè)老和尚和小和尚");
? ? ? ?Console.WriteLine("有一天,小和尚哭了,老和尚給小和尚講了個(gè)故事");
? ? ? ?i++;
? ? ? ?if (i >= 10)
? ? ? ?{ return; }
? ? ? ?Tellstory();? ?//因?yàn)槊看握{(diào)用這個(gè)方法,都是從i=0開始調(diào)用,因此每次都是0,就永遠(yuǎn)無? ? ? ? ? ? ? ? ? ? ? ? ? ? ??//法滿足>=10這個(gè)條件。
}
static void Main(string[] args)
{
? ? ? ? ?Tellstory();
? ? ? ? ? Console.ReadKey();
}
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
這是一個(gè)死循環(huán)。這個(gè)案例錯(cuò)就錯(cuò)在,他的自增,沒有寫對(duì)位置。不該放在那個(gè)地方。
正確示范:
static void?Tellstory()
{
? ? ? ?Console.WriteLine("從前有座山");
? ? ? ?Console.WriteLine("山里有座廟");
? ? ? ?Console.WriteLine("廟里有個(gè)老和尚和小和尚");
? ? ? ?Console.WriteLine("有一天,小和尚哭了,老和尚給小和尚講了個(gè)故事");
? ? ? ?i++;
? ? ? ?if?(i >= 10)
? ? ? ?{?return; }
? ? ? ?Tellstory();? ?//因?yàn)槊看握{(diào)用這個(gè)方法,都是從i=0開始調(diào)用,因此每次都是0,就永遠(yuǎn)無? ? ? ? ? ? ? ? ? ? ? ? ? ? ??//法滿足>=10這個(gè)條件。
}
static int i = 0;//把i=0寫在方法外面,這樣每次重新使用方法,就不會(huì)每次都執(zhí)行i=0
static void?Main(string[] args)
{
? ? ? ? ?Tellstory();
? ? ? ? ??Console.ReadKey();
}