C语言
递归次数
问题:计算斐波那契数列第n项的函数定义如下:
int fib(int n){
if(n==0)
return 1;
else if(n==1)
return 2;
else
return fib(n-1)+fib(n-2);
}
若执行函数调用表达式fib(10),函数fib被调用的次数是:
解答:177
通项公式解答,而非二叉树,想复杂了
设f(n) 表示执行fib(n)函数的次数,那么显然地推公式: f(n) = f(n-1) + f(n-2) + 1 (1表示执行到了fib(n)的时候执行了一次fib函数)
f(10) = f(9) + f(8) + 1
。。。
f(0) = 1
f(1) = 1
f(2) = 3
f(3) = 5
f(4) = 9
f(5) = 15
f(6) = 25
f(7) = 41
f(8) = 67
f(9) = 109
f(10) = 177
进制转换
以下程序的输出结果是( )
main()
{
char x=040;
printf("%o\n",x<<1);
}
答案:100
区分不同输出方法的不同
char
x=040; 040是八进制,转化为二进制是 0010 0000
x << 1 是二进制的 0100 0000 ,转化为十进制是 64,转化为八进制是 100
题目要求是 %o 输出,是以八进制输出,故是 100
拓展:
0x0001为16进制的数字
0200为8进制数字
%d为十进制
%o为八进制
%x为十六进制