经典的面试题,之前面试时写的不够好,回来后重新想了下,以下是2实现方式:
方法一:【递归调用】
public int FooNum(int i)
{
if (i < 0) return 0;
else if (i > 0 && i <= 2) return 1;
else return FooNum(i - 1) + FooNum(i - 2);
}
方法二:【for循环】
public int AddNum(int x)
{
int f1 = 1;
int f2 = 1;
int f3 = 0;
for (int j = 0; j < x; j++)
{
if (j > 1)
{
f3 = f2 + f1;
f1 = f2;
f2 = f3;
}
else
{
f3 = 1;
}
}
return f3;
}
调用(假设求第30位):
public void button1_Click(object sender, EventArgs e)
{
int N1= FooNum(30);
int N2 = AddNum(30);
MessageBox.Show(N1.ToString() +"---"+ N2.ToString());
}
结果:832040---832040