福哥答案2021-02-05:
举例:
N=6
[1 0 1 0 1 0]
[1 0 1 0 1 1]
[1 0 1 1 0 1]
[1 0 1 1 1 0]
[1 0 1 1 1 1]
[1 1 0 1 0 1]
[1 1 0 1 1 0]
[1 1 0 1 1 1]
[1 1 1 0 1 0]
[1 1 1 0 1 1]
[1 1 1 1 0 1]
[1 1 1 1 1 0]
[1 1 1 1 1 1]
总共13种。java
这道题是斐波那契数列。代码不用斐波那契数列,用递归最直观。git
代码用golang编写,代码以下:github
package main import "fmt" func main() { for i := 1; i <= 10; i++ { ret := ff(i) fmt.Println(i, ret) } } //一个一个试,最直观思惟 func ff(n int) int { ansval := 0 ans := &ansval arr := make([]int, n) //第0个位置,确定是1 arr[0] = 1 process(arr, 1, ans) return *ans } //递归 func process(arr []int, start int, ans *int) { if start == len(arr) { *ans++ return } if arr[start-1] == 1 { arr[start] = 0 process(arr, start+1, ans) } arr[start] = 1 process(arr, start+1, ans) }
代码结果以下:golang