【正确答案】
【答案解析】当n=1时,满足条件的二进制数为0、1,一共两个数;当n=2时,满足条件的二进制数有00、01、10,一共3个数;当n=3时,满足条件的二进制数有000、001、010、100、101,一共5个数。对n位二进制数,设所求结果为a(n),对于第n位的值,分为0或者1两种情况:
1)第n位为0,则有a(n-1)个数。
2)第n位为1,则要满足没有两个相邻为1的条件,第n-1位为0,有a(n-2)个数,因此得到结论a(n)=a(n-1)+a(n-2)。
通过观察2)中的表达式可以发现,式子满足斐波拉契数列,而求解斐波拉契数列一般有两种方法:递归方法与非递归方法,本题只将递归的方法写出来,有兴趣的读者可以自己编写非递归的斐波拉契数列求解方法。
程序代码示例如下:
#include<stdio.h>
long Fibonacci(int i)
{
if(i==1|i==2)
return 1;
else
return(Fibonacci(i-1)+Fibonacci(i-2));
}
int main()
{
printf("%1d/n",Fibonacci(7));
return 0;
}
程序输出结果:
13