这道问题满足:

  • 可以被划分为无数个相同且独立的子问题(考虑用递归)
  • 可以找到最简单的解(考虑作为递归的出口)

建议画出递归树来帮助自己理解题意。

#include<stdio.h>

void recur(int n){
	if(n==0)
		printf("0");
	if(n==1)
		printf("1");
	if(n>=2){
		recur(n-2);
		recur(n-1);
	}
}

int main(){
	int n;
	while(scanf("%d",&n)!=EOF){
		recur(n);
		printf("\n");
	}
	return 0;
}