using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AppDemo
{
class Program
{
static void Main(string[] args)
{
//Test1();
//Test2();
Test3();
}
//(1)产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
private static void Test1()
{
int[] a = new int[100];
List<int> list = new List<int>();
Random rand = new Random();
while (list.Count < 100)
{
int randnum = rand.Next(1, 101);
if (!list.Contains(randnum))
{
list.Add(randnum);
}
}
for (int i = 0; i < 100; i++)
{
a[i] = list[i];
Console.WriteLine(a[i]);
}
Console.ReadKey();
}
//(2)求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
public static void Test2()
{
Console.WriteLine(" 请输入一共有多少个数");
int m = Convert.ToInt32(Console.ReadLine());
int sum = 0;
for (int i = 0; i < m + 1; i++)
{
//偶数
if ((i % 2) == 0)
{
sum = sum - i;
}
//奇数
else
{
sum = sum + i;
}
}
Console.WriteLine("{0}个数,表达式1-2+3-4+……+m的和为{1}",m,sum);
Console.ReadKey();
}
//(3)一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。
//求解:观察数据规律,从第三个数开始,前2个数之和是紧挨着这两个数的值
//例如:2=1+1;
// 3=1+2;
// 5=2+3;
// 8=3+5;
// ......
//由此,我们可以写出成如下的伪代码:
// if(i<=0)return 0;
// else if(i>0 && i<=2)return 1
// if(i>2)
// Foo(i)=Foo(i-1)+Foo(i-2)
private static void Test3()
{
Console.WriteLine(Foo(13));
Console.ReadKey();
}
private static int Foo(int i)
{
if (i <= 0) return 0;
else if (i > 0 && i <= 2) return 1;
else return Foo(i - 1) + Foo(i - 2);
}
}
}