2014-12-27 2 views
-2
import java.util.Scanner; 

class Factorial { 
public static void main(String args[]) { 
    int n, c, fact = 1; 

    System.out.println("Enter an integer to calculate it's factorial"); 
    Scanner in = new Scanner(System.in); 
    n = in.nextInt(); 

    if (n < 0) 
    System.out.println("Number should be non-negative."); 
    else 
    { 
    for (c = 1 ; c <= n ; c++) 
     fact = fact*c; 

    System.out.println("Factorial of "+n+" is = "+fact); 
    } 
} 
} 

숫자의 계승을 찾는이 코드에서 "fact = fact * c"부분을 얻지 못합니다. 사실 나는 c의 새로운 곱셈 계수로 "업데이트"되었기 때문에 그 숫자가 곱해진다는 것을 알고 있습니다.사실 = 사실 * c ?? 어떻게 작동합니까?

예 : n = 3, c = 1,2,3 및 fact = 1 .. 그러면 프로세스는 (1 * 1) * (1 * 2) * (1 * 3) = 6 ?

+3

당신이 "숫자가 번성 할"의미합니까? – harold

+1

디버거에서 코드를 단계별로 실행하면 각 코드 행의 내용을 볼 수 있습니다. –

+1

(부적절한 팁 :'사실 * = c') – Rogue

답변

3

발현

fact = fact * c; 

승산 c 저장 fact에 의해 결과 fact.

따라서 다음과 같은 코드가 실행될 때 발생합니다

  • 를 시작에서, fact1입니다.
  • 첫 번째 반복에서 1을 곱한 결과가 1입니다.
  • 두 번째 반복에서 2을 곱하고 2이됩니다.
  • 세 번째 반복에서 3을 곱하고 6이됩니다.
  • 네 번째 반복에서 4을 곱하고 24이됩니다.

등등.

+0

정말 고마워요! – cartagery

0

자네 말이 맞아, 그것은 다음과 같이 작동

fact is 1 initially 

loop when c = 1: 
multiply c with fact i.e. 1 * 1 
store the result back in fact i.e. fact = 1 

loop when c = 2 
multiply c with fact i.e. 1 * 2 
store the result back in fact i.e. fact = 2 

loop when c = 3 
multiply c with fact i.e. 2 * 3 
store the result back in fact i.e. fact = 6