2016-09-21 3 views
-1

내 프로그램은 현재 양의 정수를 소수 오름차순으로 출력합니다. 숫자를 내림차순으로 출력하도록 함수를 설정하는 방법을 알아 내려고 노력 중입니다.재귀를 사용한 프라임 인수

예를 들어, showFactors (100)는 현재 "2 2 5 5"를 출력합니다.

대신 "5 5 2 2"를 출력하고 싶습니다. cout을 호출이 어디로 간단하게 정리하여 쉽게 수정이 있어야처럼

10 // Void function "showFactors" that takes in an int "number" and another  int "factor", which is initialized to 2 
11 void showFactors(int number, int factor = 2) 
12 { 
13 
14 if (number<2) //returns nothing if number<2 
15 { 
16  return; 
17 } 
18 if (number%factor==0) //modulus function is used to get prime factorization 
19 { 
20  cout<<factor<<" "; 
21  showFactors(number/factor, factor); //recursive call 
22 } 
23 else //if (number%factor != 0) //this modulus function is used in order to output factor !=2 
24 { 
25  showFactors(number, factor+1); 
26 } 
27 } 

는 느낌,하지만 난 지금까지 운이 없었어요.

편집

: 네 그것은 단지 라인 (21) 이후에 가지 말았어야 라인 (20) 및 (21)

+0

@prp을 전환하는 것만 큼 간단했다? – vu1p3n0x

답변

1
#include <iostream> 
using namespace std; 
void sf (int number,int factor=2) 
{ 
    if (number<2) 
     return; 
    if (number%factor == 0) 
    { 
     sf (number/factor,factor); 
     cout<<factor<<"\t"; 
    } 
    else 
     sf (number,factor+1); 
} 

int main() 
{ 
    sf (1729); 
    cout<<"\n"; 

    return 0; 
} 
+0

그게 정말 간단했다, 고마워. 만약 재현 호출이 재귀 호출 이후에 배치 되었다면, 함수는 절대로 절을 호출하지 않을 것이라는 점에서 재귀에 대한 오해가있었습니다. – Obamaa