Csharp递归函数练习

1+2!+3!+···+10!

利用多少个方法计算结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
static int F1(int n)
{
if (n == 1)
{
return 1;
}
int result = n * F1(n - 1);
return result;
}
static int F2(int n)
{
if(n == 1){
return 1;
}
int result = F2(n - 1) + F1(n);
return result;
}
static void Main(string[] args)
{
Console.WriteLine(F2(10));
}

输出结果:

1
4037913

有关系式1^1+2^2+3^3+···+K^K<2000,编一个程序,求出满足此关系式的最大值

利用递归和循环解决这个问题

1.循环:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
int k = 1;
int result = 0;
while (true)
{
result += k * k;
if (result >= 2000)
{
break;
}
k++;
}
Console.WriteLine(k - 1);
}

输出结果:

1
17

2.递归:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
static int F(int n)
{
if (n == 0)
{
return 0;
}
int result = F(n - 1) + n * n;
return result;
}
static void Main(string[] args)
{
int i = 1;
while (true)
{
if(F(i) >= 2000)
{
break;
}
i++;
}
Console.WriteLine(i - 1);
}

输出结果:

1
17

什么是常量

  1. 在C#中,常量是一种特殊的变量,其值在初始化后不能被改变。常量用于存储那些在程序运行期间不应该改变的数据。
  2. 以下是C#中常量的几个关键点:

声明:使用const关键字来声明常量。
类型:常量必须有明确的类型,通常是基本数据类型,如int、double、string等。
初始化:常量在声明时必须被初始化,且之后不能被重新赋值。
作用域:常量的作用域取决于其声明的位置,可以是局部的(在方法或代码块中)或全局的(在类或命名空间中)。
编译时常数:编译器在编译时会将常量的值内嵌到代码中,这意味着它们在运行时是不可变的。

下面是一个C#中声明和使用常量的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class ConstantsExample
{
// 声明一个常量
public const int MaxValue = 100;

public void Display()
{
// 使用常量
Console.WriteLine("The maximum value is: " + MaxValue);
}
}

class Program
{
static void Main()
{
ConstantsExample example = new ConstantsExample();
example.Display();

// 尝试修改常量值将导致编译错误
// ConstantsExample.MaxValue = 200; // 错误:无法对只读字段“ConstantsExample.MaxValue”赋值
}
}

在这个例子中,MaxValue是一个常量,它被声明为const,并且初始化为100。在Display方法中,我们使用这个常量来打印信息。尝试修改MaxValue的值将导致编译错误,因为常量在初始化后不能被改变。