这是c#的递归过程,谁能告诉我是怎魔递归的? 结果是 1 2 3
这是c#的递归过程,谁能告诉我是怎魔递归的?usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;us...
这是c#的递归过程,谁能告诉我是怎魔递归的?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
public void Count(int inval)
{
if (inval == 0)
return;
Count(inval - 1);
Console.WriteLine("{0}",inval );
}
static void Main(string[] args)
{
Program pr = new Program();
pr.Count(3);
Console.ReadKey();
}
}
} 展开
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
public void Count(int inval)
{
if (inval == 0)
return;
Count(inval - 1);
Console.WriteLine("{0}",inval );
}
static void Main(string[] args)
{
Program pr = new Program();
pr.Count(3);
Console.ReadKey();
}
}
} 展开
3个回答
展开全部
public void Count(int inval) //(一)入口.
{
if (inval == 0) //(二)出口,即退出递归方法.
return;
Count(inval - 1); //(三)程序到这里就直接转到(入口).
Console.WriteLine("{0}",inval );
}
/*解析过程:
1,首先传递给方法的是 int 类型的 3,从 "入口"开始.
2,然后"试图"转到(二);但是 3 == 0 不成立.所以继续往下走,即到(三).在这里注意了,执行(三)时将 3 - 1 即 2 直接转到"入口".再判断.. 2 == 0是否成立...如此继续直到 0时..成立.所以退出,即不再递归(即不再从(三)转到"入口".
总结:其实你一句一句分析,递归很简单的...就像这里,本来是逐句执行,但递归就是在(三)时,会直接转到"入口"...
你慢慢分析我说的...我说的很详细了...逐句看我说的...应该对"递归"基本了解了...
补充:重要的一点没有说,因为递归方法中,是递归地传递 3 -> 2 -> 1 ,所以在成立时(即1时),这里的出口是1,但是要往开始的方向..所以会打印 1-> 2 -> 3.
递归的方式其实和读取 文件的递归其实是一样的...
*/
展开全部
if条件后没有大括号就说明如果if里面的条件成立只执行return;如果不成立则执行return后面的两条语句,之到inval==0,执行return语句,方法结束,结果应该是3,2,1,。。(return后的那个语句又重新调用Count(inval)这个方法),明白?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-14
展开全部
核心就是:在Count函数中调用了Count自身即Count(inval - 1);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询