法1: static void Main(string[] args)
{
Console.WriteLine(Foo(30));
Console.ReadKey();
}
public 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);
}
法2 :
//前二数的和就是下一个数。
int sum1 = 13; //第一个数也可以是8
int sum2 =21; //第二个数也可以变成13
int sum = 0;
for (int i =9; i <= 30; i++) //相应的i值也要减少
{
sum = sum1 + sum2; //得到后面的数
sum1 = sum2; //将之和前面的数交换
sum2 = sum;
}
Console.WriteLine(sum);
Console.ReadKey();
问题:有没有办法把第二种办法也能变得活性。不只限制在第30个数 |
|