using System;
namespace lesson11_递归函数练习题
{
class Program
{
#region 练习题1
//使用递归的方式打印0到10
static void A(int a)
{
if (a > 10)
{
return;
}
Console.Write(a+" ");
a++;
A(a);
}
#endregion
#region 练习题2
//传入一个值,递归求该值的阶乘 并返回 5!=1*2*3*4*5
static int B(int a)
{
if (a == 0)
{
return 1;
}
return a * B(a - 1);
}
#endregion
#region 练习题3
//使用递归求1!+2!+3!+4!……+10!
static int C(int a)
{
if (a == 1)
{
return 1;
}
return a * C(a-1);
}
static int C2(int b)
{
if (b == 1)
{
return 1;
}
return C(b) + C2(b - 1);
}
/*static int C2(int b)
{
int sum = 0;
for (int i = 1; i <= b; i++)
{
sum += C(i);
}
return sum;
}*/
#endregion
#region 练习题4
//一根竹竿长100m 每天砍掉一半,求第十天它的长度是多少(从第0天开始)
static float D(int a, float l)
{
if (a == 0)
{
return l;
}
return D(--a, l / 2.0f);
}
#endregion
#region 练习题5
//不允许使用循环语句 条件语句,在控制台中打印出1到200这200个数(提示:递归+短路)
static bool E(int a)
{
Console.Write(" " + a);
return a < 200 && E(++a);
}
#endregion
static void Main(string[] args)
{
Console.WriteLine("递归函数练习题");
A(0);
Console.WriteLine();
Console.WriteLine(B(3));
Console.WriteLine(C2(3));
Console.WriteLine(D(5, 100));
E(1);
}
}
}