N位数的有效序列数(一起没有两个1)的数学方程

时间:2011-06-23 07:06:11

标签: bit mathematical-expressions

我遇到了这个采访难题,想知道它的准确答案。

您可以生成2 ^ n个n位数的不同二进制序列。在这些序列中,具有两个1的序列将被视为无效的其他有效。

For example for N=3 sequences can be:
000 -> v 
001 -> v
010 -> v
011 -> iv
100 -> v
101 -> v
110 -> iv
111 -> iv       So output should be: 5

因此制定策略(提供给我的提示:f(n),以f(n-1)表示),它可以判断N位数可以有多少个有效序列。

1 个答案:

答案 0 :(得分:2)

更新

原来是

  

答案(n位)=斐波那契(n + 2),如果斐波纳契(0)= 0,则斐波那契(1)= 1


分析

1位

0
1

2位

00
01
--
10
11 // x

现在你看,如果一个序列以1结尾,它只能进一步追加0。

3位

000
001
--
010
011 // x
--
100
101

一般情况下,[n]位中有多少0和多少1

f[1](0) = 1 = fibonacci(2) = fibonacci(1+1)
f[1](1) = 1 = fibonacci(1) = fibonacci(1)
f[n](0) = f[n-1](0) + f[n-1](1) = fibonacci(n+1)
f[n](1) = f[n-1](0) = fibonacci(n)
f[n] = f[n](0)+f[n](1) = fibonacci(n+1) + fibonacci(n) = fibonacci(n+2)

fibonacci(0) = 0
fibonacci(1) = 1
fibonacci(2) = 1