using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FunctionDG
{
internal class Program
{
static void Main(string[] args)
{
//1.递归的概念
//1.何为递归?
//递归算法是一种直接或者间接调用自身函数或者方法的算法。
//[自己调用自己]
//int a = Number(100);
int b = AddNum(5);
//Console.WriteLine("a:" + a);
Console.WriteLine("b:" + b);
Console.ReadKey();
}
/// <summary>
/// for 循环实现
/// </summary>
//练习:实现1加到100之和。
static int Number (int n)
{
int total = 0;
for(int i = 0; i <= n; i++)
{
total += i;
}
return total;
}
/// <summary>
/// 递归实现
/// </summary>
/// 5/4/3/2/1
//2.递归1加到5
static int AddNum(int n)
{
// if(n == 1)
//{
// return 1;
//}不简写
//如果传递过来的是1,直接返回最终结果:1.
if (n == 1) return 1;//简写
// 5 + AddNum(4);:10 5+10 return 15
// 4 + AddNum(3);:6 4+6 return 10
// 3 + AddNum(2);:3 3+3 return 6
// 2 + AddNum(1);:1 return:3
return n + AddNum(n - 1);
// 递归原则
//1.函数会一直调用自己,直到满足特定条件(递归要有一个结束条件);
//2.递归调用时会传递些参数,每次调用都会将一个新的参数传递给自己;
}
}
}
注; 图中Add为AddNum
返回的时候此时从第一个AddNum(n-1)已经变成1了。所以2+1=3。以上同理