在C中使用无限循环

时间:2016-03-24 19:10:04

标签: c

int powi(int a,int b)
{
      if(b<0)      
        return 1 / powi (a,-b);
      else if(b==0)
        return 1;
      else if(b==1)
        return a;
      else
        return a*powi(a,b-1);

}

int factorial(int number)
{
    int x,fac;
    /* numberi scanfle istemis ona gore dusun */
    fac=1;

    for(x = 1; x <= number; x++)
   {
      if (number >= 0)
         fac = fac * x;
      else
         fac=1;
   }
return 0;
}


void getInputs(int *degree,int *n,int *exit)
{
    scanf("%d %d",degree,n);
    if(*degree=='e')
        *exit=1;
    else
        *exit=0;

}

double cosine(int degree,int n)
{
#define pi 3.14
int sum,i;
    if(degree<360 && degree>-1)
        degree=(degree*pi)/180;
    else if(degree<0)
        {   do
                { degree=degree+360;
                } while(degree<0);
        degree=(degree*pi)/180;
        }
    else
        {
        degree=degree%360;  
        degree=(degree*pi)/180;
        }

for(i=0;i<n+1;i++)

    {   
        sum=0;
        sum=sum+powi(-1,n)*powi(degree,2*n)/factorial(2*n);


    }   

return 0;

}

double sine(int degree,int n)
{
int i,sum;
#define pi 3.14
    if(degree<360 && degree>-1)
        degree=(degree*pi)/180;
    else if(degree<0)
        {   do
                { degree=degree+360;
                } while(degree<0);
        degree=(degree*pi)/180;
        }
    else {
        degree=degree%360;  
        degree=(degree*pi)/180;
        }

for(i=0;i<n+1;i++)

    {
    sum=0;
        sum=sum+powi(-1,n)*powi(degree,2*n+1)/factorial(2*n+1);
    }
return 0;

}

大家好,我有我的这个小代码试图通过Taylor和Maclorin系列计算罪和cos。但似乎我搞砸了什么。 这是没有主要功能的基本代码对于EX:当我尝试调用sin(30,4)时,它会给出一个无限循环。我真的无法找到它被困在哪里。

一点帮助就会受到影响。 谢谢你的时间。

1 个答案:

答案 0 :(得分:0)

double sum=0;
for(i=0;i<n+1;i++)
{
    sum=sum+(double)(powi(-1,n)*powi(degree,2*n+1))/factorial(2*n+1);
}

返还总和;

试试这个

  1. 你需要将sum声明为double
  2. 分割长表达式时输出可能是小数而不是。你应该将它强制转换为浮动或双重
  3. 返回总和而不是0