2011-09-21 5 views
3

반복을 통해 1 ~ 9의 계승을 계산할 수있는 프로그램을 작성하려고하는데, 시도하는 동안 몇 가지 문제가 발생합니다. 내 프로그램에서 내 문제를 파악하도록 도와주세요. 나는 단지 프로그래밍을 배우고 있습니다. 반복으로 1 ~ 9의 계승을 계산하는 프로그램

다음

내 프로그램입니다, 그것은 뭐가 잘못 말해주십시오 : 모든

public class iterative { 
    static int ans=1; 
    public static void iteration() { 
     System.out.println("n n!"); 

     for (int n=1; n<10; n++) { 
      while ((n-1)>0) 
       ans=n*(n-1); 
      System.out.println(n + " " + ans); 
     } 

    } 


    public static void main(String[] args) { 
     iteration(); 
    } 
} 
+0

어떻게 문제가 무엇인지 알려 대해? 우리는 당신의 숙제를하기 위해 여기에 있지 않습니다. 구체적인 질문을하십시오. –

+0

숙제를위한 것입니까? 괜찮 으면 좋겠지 만, 일반적으로 그것에 대해 선행해야합니다. 사람들은 재료를 배우는 데 도움이되도록 힌트와 같은 답을 줄 것입니다. 또한, 어떤 오류가 있습니까? 좀 더 구체적 일수록 더 많은 도움을 줄 수 있습니다. – pkaeding

+0

두 번째 println은 힌트를 제공합니다. 각 반복에서 ans의 가치는 얼마입니까? 당신은 그것이 무엇 이길 기대합니까? – Maciej

답변

0

답변, 당신은 또한 재귀와 함께 완벽한 가까이된다 여기 코드 :

public class iterative { 

    public static int iteration(int n) { 
     int result; 
     if(n==1)return n; 
     else 
     result = n*iteration(n-1); 
    return result; 
    } 


    public static void main(String[] args) { 
     System.out.println("Result is :" + iteration(9)); 
    } 
} 
다윗의 솔루션 @처럼
2

먼저, ans에 대한 정적을 사용하지 마십시오. 지역은 당신이 원하는 것입니다.

두 번째로 사용한 계승 반복 관계가 잘못되었습니다. 이런 식으로해야합니다.

int ans = 1; 
for (int n=1; n<=9; n++) { 
    ans = ans*n; 
    System.out.println(n + " " + ans); 
} 
0

세 가지 큰 문제점이 있습니다.

첫째, "ans"는 전역이며 결코 재 할당되지 않습니다. 그래서 시간이 지남에 누적 된 잘못된 값이 표시됩니다.

다른 하나는 while 루프를 n> 1.

마지막으로 영원히 실행하는 것입니다, 재발 관계는 잘못된 것입니다. ans = ans * (n-1)이어야합니다. 코드를 참조하십시오.

중첩 루프를 사용한다는 사실은 나에게 계승표를 인쇄하려고한다는 것을 암시합니다.

이 시도 :

for (int n=1; n<10; n++) { 
    int ans = 1; 
    int x = 0; 
    while ((n-x)>0){ 
     ans=ans*(n-x); 
     x++; 
    } 
    System.out.println(n + " " + ans); 
} 
0

알고리즘에 필요한 작업뿐만 아니라 : 위의

import java.util.*; 
import java.lang.*; 

class Main 
{ 
    public static void main (String[] args) throws java.lang.Exception 
    { 
     int i = 1; 
     while(i < 10) 
      iteration(i++); 
    } 

    public static void iteration(int max) { 
     System.out.println("n n!"); 
     int ans = 1; 
     for (int n=1; n<=max; n++) { 
      ans *= n;  
     } 
     System.out.println(" " + ans); 
} 

ideone example

0

하지만 짧은

for(int i=1, ans=1; i <= 9; i++, ans *= i) 
    System.out.println(i + " " + ans); 
관련 문제