static void Main(string[] args)
...{
Console.WriteLine(Process1(30));
Console.ReadLine();
}
public static int Process1(int i)
...{
//计算数组{1,1,2,3,5,8.......} 第30位值
if (i == 0) return 0;
if (i == 1) return 1;
else
return Process1(i - 1) + Process1(i - 2);
}当i=4或者i=5的时候 是个什么过程啊 ?系统是怎么走的啊? 各自的值是多少啊?
...{
Console.WriteLine(Process1(30));
Console.ReadLine();
}
public static int Process1(int i)
...{
//计算数组{1,1,2,3,5,8.......} 第30位值
if (i == 0) return 0;
if (i == 1) return 1;
else
return Process1(i - 1) + Process1(i - 2);
}当i=4或者i=5的时候 是个什么过程啊 ?系统是怎么走的啊? 各自的值是多少啊?
int Foo(int n)
{
if (n <= 2)
{
return 1;
}
else
{
return Foo(n - 1) + Foo(n - 2);
}
}
Process1(3)=return Process1(2) + Process1(1)=2;
Process1(2)=return Process1(1) + Process1(0)=1;所以i=4时,Process1(4)=return Process1(3) + Process1(2)=2+1=3;i=5这个步骤是一样的
{
//计算数组{1,1,2,3,5,8.......} 第30位值
if (i == 0) return 0;
if (i == 1) return 1;
else
return Process1(i - 1) + Process1(i - 2);
}就这样
{
//计算数组{1,1,2,3,5,8.......} 第30位值
//if (i == 0) return 0;不可能等于0所以这句可以不要
if (i == 1) return 1;
else
return Process1(i - 1) + Process1(i - 2);
}
int s2 = 1;
for(int i = 3; i<=30; i++)
{
int tmp = s1 + s2;
s1 = s2;
s2 = tmp;
}循环结束后 s2 就是第30位的值。
求 Process1(3)和 Process1(2)
Process1(3):
Process1(3) = Process1(2) + Process1(1)
Process1(2) = Process1(1) + Process1(0) = 1 + 0 = 1
Process1(3) = 1 + 1 = 2Process1(2):
Process1(2) = Process1(1) + Process1(0) = 1 + 0 = 1Process1(4) = 2 + 1 = 3
{
//计算数组{1,1,2,3,5,8.......} 第30位值
if (i == 0) return 0;
if (i == 1) return 1;
else
return Process1(i - 1) + Process1(i - 2);
}
{
public static int getFibonacciNum(int i)
{
if(i < 0) return -1;
if(i < 3) return 1;
int temp = 2;
int head = 1;
int end = 1;
while (temp < i)
{
head += end;
head ^= end;
end ^= head;
head ^= end;
temp++;
}
return end;
}
}
传进去的是个5,那么当Process1(i - 1)这个方法走完以后,后面的Process1(i - 2)这个方法第一次开始运行的时候i的值是多少呢、?
传进去的是个5,那么当Process1(i - 1)这个方法走完以后,后面的Process1(i - 2)这个方法第一次开始运行的时候i的值是多少呢、?
传进去的是个5,那么当Process1(i - 1)这个方法走完以后,后面的Process1(i - 2)这个方法第一次开始运行的时候i的值是多少呢、?
public static Int32 Process1(Int32 i)
{
Console.WriteLine("In Process1({0})",i);
if (i == 1 || i == 2)
return 1;
else
return Process1(i - 1) + Process1(i - 2);
} static void Main(string[] args)
{
Process1(5);
}