在FFT递归中,希望有一个可以累加的变量,代码中是结构体s,这个变量需要传递到下一个递归中,但是调试发现每次进入一个FFT递归,s都被重新置零了,不知道为什么,希望也没有办法可以解决,谢谢
mult和add是复数的乘法和加法,代码中没有给出了
void FFT(struct Compx *t , int n , struct Compx root , struct Compx result)
{
int i,j;
struct Compx s = {0 , 0};
struct Compx * even = (struct Compx *)malloc((n / 2) * LEN);
struct Compx * odd = (struct Compx *)malloc((n / 2) * LEN);
//划分奇偶项
for (i = 0 , j = 0 ; i < n; i += 2 , j++ )
{
even[j].real = t[i].real;
even[j].imag = t[i].imag;
}
for (i = 1 , j = 0 ; i < n; i += 2 , j++)
{
odd[j].real = t[i].real;
odd[j].imag = t[i].imag;
}
if(n == 2)
{
s = add(result, add( even[0] , mult( root , odd[0]) ));
}
else
{
FFT(even , n / 2 , mult(root , root) , s);
FFT(odd , n / 2 , mult(root , root) , s);
}
}