正向顺序是
5, 2, 3, 2, 5, 7, 9, 6
7, 5, 12, 15, 3, 1, -2, 3
12,27,2,-3, 3, 1, -2, 3
39,-5,2,-3, 3, 1, -2, 3
那么递推回去的公式应该是
for i=1 to n (i*=2)
do b[2*k] <- (a[k]+a[i+k])/2;
do b[2*k+1] <- (a[k]-a[i+k])/2;
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
int a[300],b[300];
int n,i,k,j;
while(cin>>n){
if(n==0) break;
for(i=0;i<n;i++){
cin>>a[i];
}
for(i=1;i<n;i*=2){
for(k=0;k<i;k++){
b[2*k]=(a[k]+a[i+k])/2;
b[2*k+1]=(a[k]-a[i+k])/2;
}
for(j=0;j<i*2;j++){
a[j]=b[j];
}
}
for(i=0;i<n;i++){
cout<<a[i];
if(i!=n-1)cout<<" ";
}
cout<<endl;
}
return 0;
}