6
法一: #include<stdio.h> #define n 8 int set(int m){ int sum = 1; if(m == 1) return 1; else{ for(int i = 1;i <= m / 2;i ++){ sum = sum + set(i); } return sum; } } int main() { int count; count = set(n); printf("%d\n",count); return 0; } 法二: #include<stdio.h> int a[100]; int f(int n) { a[0] = a[1] = 1; int i,j; for(i = 2;i <= n;i ++){ a[i] = 0; for(j = 0;j <= i / 2;j ++) a[i] = a[i] + a[j]; } return a[n]; } int main() { int n = 6; printf("%d\n",f(n)); return 0; } 法三: #include<stdio.h> int f(int n) { if(n == 1) return 1; return f(n / 2 * 2 - 1) + f(n / 2); } int main() { int n = 6; printf("%d\n",f(n)); return 0; }