一、递归
递归-在方法体内,再次调用方法本身
递归必须有出口
using System;
namespace lesson_12
{
public class Math{
//递归就是在方法内部调用方法本身
//1、递归必须有结束条件
//2、将大的复杂的问题分解为与原问题类似的小问题来问题,并且小问题和原问题是同一件事并且更简单
//递归本身是一种算法
public int F(int n){
//结束条件
if (n > 1) {
//进行递归
return F (n - 1) + n;
} else {
return 1;
}
}
}
class MainClass
{
public static void Main (string[] args)
{
//计算:1+2+3+4……+99+100的和
/*数据角度解决
* f(n)=1+2+3+……+(n-1)+n;
* f(100)=1+2+3+……+99+100;
*
* f(1)=1;
* f(2)=f(1)+2=1+2;
* ……
* f(4)=1+2+3+4;
* f(5)=1+2+3+4+5=f(4)+5;
* f(6)=f(5)+6
* ……
* f(100)=f(99)+100;
*
* f(n)=f(n-1)+n: (n>1)
* f(n)=1; (n=1)
*/
//递归解决
Math m=new Math();
Console.WriteLine (m.F(100));//5050
}
}
}
练习:
1、利用递归计算1+2+3+4……+100的值
2、求n=18时n!。(1*2*3***18)
推荐视频讲师博客:http://11165165.blog.51cto.com/