# 回顾数组的创建与初始化
int[] intArray = { 1, 2, 3, 4 };
int[] intArray1 = new int[5] { 1, 3, 5, 7, 9 };
Console.WriteLine(String.Join(" ", intArray));
//Join(String, Object[]) 串联对象数组的各个元素,其中在每个元素之间使用指定的分隔符。
string str = "1, 3, 5, 7";
string[] intArray2 = str.Split(",");
char[] charIntArray = str.ToCharArray(); //数组类型转换
//循环遍历
foreach(int i in intArray)
{
Console.WriteLine(i);
}*/
函数
封装一段可执行的代码块
static int Max(int num1, int num2=3) // static修饰符 表示静态函数 void表返回值类型,返回值为空 可以为其他类型 ()为参数列表 int num为形参
{
Console.WriteLine(2);
return 2; //return 表示函数的结束 意味着return下面的代码不会执行
}
练习一
使用函数判断M到N(M不大于N)区间内的真素数
//创建方法 判断素数 将一个数反转
/* static bool isPrime(int num)
{
for(int i = 2; i<num; i++)
{
if(num % i == 0)
{
return false;
}
//上面循环没有一次执行if中的语句, 那就是素数
}
return true;
}
//创建一个方法 将一个数翻转
static int getReverse(int num)
{
string strNum = Convert.ToString(num);
string strNum2 = "";
for (int i=strNum.Length-1; i>=0; i--)
{
strNum2 += strNum[i];
}
return Convert.ToInt32(strNum2);
}
//传入两个数
string str = Console.ReadLine();
string[] strArray = str.Split(" ");
int M = Convert.ToInt32(strArray[0]);
int N = Convert.ToInt32(strArray[1]);
string strOut = "";
//循环遍历 M到N的数 判断是否是真素数
for (int i=M; i<=N; i++)
{
if(isPrime(i) && isPrime(getReverse(i)))
{
if (strOut == "")
{
strOut += i;
}
else
{
strOut += "," + i;
}
}
}
if(strOut == "")
{
Console.WriteLine("NO");
}
else
{
Console.WriteLine(strOut);
}
*/
将一组数据转为数组
//将一组数据转为数组
/*static void getNum(params int[] numArray)
{
Console.WriteLine(String.Join(" ", numArray));
}
getNum(1, 2, 4, 6, 67, 89);
*/
练习二
使用函数将一个数所有因子显示出来
//取一个数字所有因子并返回
/* int num = Convert.ToInt32(Console.ReadLine());
getDivisor(num);
static void getDivisor(int num)
{
for(int i=1; i<=num; i++)
{
if(num % i == 0)
{
Console.WriteLine(i);
}
}
}*/
函数重载
递归函数
递归函数 函数中调用自己, 一般有个出口,出口目的是跳出
练习三
使用递归函数求斐波那契数列
//斐波那契数列
/* static int FibNum(int n)
{
if (1 == n || 2 == n)
{
return 1;
}
return FibNum(n-1) + FibNum(n-2);
}
int num = Convert.ToInt32(Console.ReadLine());
for (int i = 1; i<=num; i++)
{
Console.Write(FibNum(i)+" ");
}*/
// FibNum(10);
练习四
//求关系式 f(k)=1*1+2*2+...+k*k f(k-1)=1*1+2*2+...+(k-1)*(k-1) f(k)=f(k-1)+k*k 出口f(1)=1
/*static int Snum(int n)
{
if(1 == n)
{
return 1;
}
return Snum(n - 1) + n * n;
}
int i = 1;
while (true)
{
if (Snum(i) >= 2000) break;
i++;
}
Console.WriteLine(i - 1);
Console.WriteLine(Snum(i - 1));
Console.WriteLine(Snum(i));*/
练习五
使用递归函数计算猴子吃桃问题
//猴子摘桃问题
//求关系式 f(1)= n f(2) = f(1)/2-1 f(3)=f(2)/2-1 f(n)=f(n-1)/2-1 f(n-1)=(f(n)+1)*2 出口:f(10)=1
//f(n) = ((f(n+1)+1)*2
static int getTzi(int n)
{
if (n == 10) return 1;
return (getTzi(n + 1 ) + 1 ) * 2;
}
for(int i=1; i<11; i++)
{
Console.WriteLine("第{0}天桃子数:{1}", i, getTzi(i));
}