/*斐波那契的递归函数
*实现打印前40位斐波那契数列
*/
int Fb(int i) //i为第i个月
{
if(i<2)
return i==0?0:1; //当n=0、n=1时情况,该月返回的兔子总数=0/1
return Fb(i-1)+Fb(n-2); //当n>
1时,第i个月返回的兔子总数
}
int main()
{
int i;
for(int i=0;i<40;i++) //依次计算并打印前40个月兔子的数量
{
printf("%d",Fb(i));
}
return 0;
}
二、栈的应用-四则运算表达式求值 1.中缀表达式转换为后缀表达式 (1)目标:中缀表达式"9+(3-1)*3+10/2"转化为后缀表达式"9 3 1 - 3 * + 10 2 / +" (2)规则:从左到右遍历中缀表达式的每个数字和符号。若是数字就输出,若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于栈顶符号,则栈顶元素依次出栈并输出,并将当前符号进栈,一直到最终输出后缀表达式为止。 2.后缀表达式计算结果 (1)目标:计算后缀表达式"9 3 1 - 3 * + 10 2 / +" (2)规则:从左到右遍历表达式的每个数字和符号,遇到是数字就进栈,遇到是符号,就将处于栈顶两个数字出栈,进行运算,再将运算结果进栈,一直得到最终结果。 总结: 将中缀表达式转换为后缀表达式关键在于-栈用来进出运算的符号 将后缀表达式进行运算的得出结果关键在于-栈用来进出运算的数字。