当然,这个问题完全就是递归吗。可是我对递归的思维还是不到位,没有想清楚。要设置好返回条件,否则无限就麻烦了。
#include<iostream>
#include<cstdio>
using namespace std;
int sum=1;
void addshu(int shu){
if(shu/2==0){//如果无法对半,退出。
return ;
}
for(int i=1;i<=shu/2;i++){//从i枚举到对半
addshu(i);//对半的数继续对半
sum++;//加上数
}
}
int main(){
int a;
cin>>a;
addshu(a);
cout<<sum;
return 0;
}