递归:2的幂次方中输出问题,小问题求解答

为何已经规定n=2就输出2,return,但是还是输出了

img


2(2(0))

#include 
using namespace std;
void f(int n){
    if(n==2){
        cout<<"2";
        return;
    }
    if(n==0)return;
    if(n==1){
        cout<<"2(0)";
        return;
    }
    int i=2,j=1;
    while(n>=i){
        i*=2;
        j++;
    }
    i/=2;
    j--;
    n-=i;
    
    if(n){//未被2整除 
        cout<<"2(";
        f(j);
        cout<<")+";
        f(n);
    }
    else{//n被2整除 
        cout<<"2(";
        f(j);
        cout<<")";
        return;
    }
    
}
int main() {
    int n;
    cin>>n;
    f(n);
}

img

img