문제

나는 순서가있다.

a1 = 1 - cos(x);
ai = a1 + (-1)^(i-1) * x^(2*i-2) / (2*i-2)!

재귀 유무에 관계없이 이것을 써야합니다. 그러나 다른 결과가 있습니다.
내 코드는 다음과 같습니다. http://codepaste.net/q213q6

도움이 되었습니까?

해결책

나는 이것이 숙제라는 가정하에 운영 할 것입니다. 내가 틀렸다면이 게시물을 편집하거나 다시 게시 할 것입니다.

먼저, 당신은 꼬리 재귀 방식으로 계승 기능을 작성하려고 노력해야합니다. 아마도 C에서 큰 차이를 만들지는 않지만 좋은 연습입니다.

int helper( int x, int acc ) {
    if( x == 0 ) {
        return acc;
    }
    else {
      return helper( x - 1, acc * x );
    }
}

int factorial( x ) {
  helper( x, 1 );
}

다음으로, 당신은 일반적으로 당신의 재귀 함수 내부에 루프를 넣고 싶지 않아서 그 점을 다소 물리칩니다. 재귀적인 호출을 테스트와 반복 또는 리콜로 하나의 반복으로 생각하십시오.

다른 팁

플로팅 포인트 산술을 수행하고 있기 때문에. 다양한 구현 방법은 다른 결과를 생성 할 수 있습니다. 귀하의 경우 손실이 발생하는 한 곳을 생각할 수 있습니다.

currC = pow(x, 2*i-2);

동일하지 않습니다

  47:          currC = currC * x * x;

자세한 내용은,http://en.wikipedia.org/wiki/floating_point#multiplication

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top