求1 1 2 3 5 8 11 19......第n个数
递归算法和循环算法的实现
private void frmMain_Load(object sender, EventArgs e)
{
//int result = this.FindSum(5);
//MessageBox.Show(result.ToString());//输出5
//
int key = 0;
int result;
while (true)
{
result = this.RegFindValue(4)+this.RegFindValue(3);//递归算法的调用
MessageBox.Show(result.ToString());//连续输出五次5
key++;
if (key==5)
break;
}
//MessageBox.Show(result.ToString());
//循环算法的调用
int value = LoopFindValue(6);
MessageBox.Show(value.ToString());
}
//递归算法的实现
private int RegFindValue(int m)
{
if (m == 1 || m == 2)
return 1;
else
return RegFindValue(m - 1) + RegFindValue(m - 2);
}
//循环算法的实现
private int LoopFindValue(int n)
{
if (n<=1)
return 0;
int result=0;
int firstnum = 0, secondnum = 0;
for (int i = 1; i <=n; i++)
{
if (i == 1 || i == 2)
result=firstnum = secondnum = 1;
else
{
result = firstnum + secondnum;
firstnum = secondnum;
secondnum = result;
}
}
return result;
}