์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜/์ž๋ฃŒ๊ตฌ์กฐ

[์ˆœํ™˜๊ณผ ๋ฐ˜๋ณต] ํŒฉํ† ๋ฆฌ์–ผ ๊ณ„์‚ฐ ํ”„๋กœ๊ทธ๋žจ

Rainbow๐ŸŒˆCoder 2022. 1. 31. 15:20
728x90

ํŒฉํ† ๋ฆฌ์–ผ์„ ์ˆœํ™˜, ๋ฐ˜๋ณต ๊ฐœ๋…์— ๋งž์ถ”์–ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์งœ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

1. ์ˆœํ™˜

 

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int factorial(int n)
{
    cout << n << "\n";
    if (n <= 1)
    {
        return n;
    }
    else
    {
        return (n * factorial(n - 1));
    }
}

int main() 
{
    int k = factorial(8);
    cout << k;
    return 0;
}

์ถœ๋ ฅ

8
7
6
5
4
3
2
1
40320

์Šคํƒ ํ˜ธ์ถœ์— ๋”ฐ๋ผ(๋’ค์— ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜๋ถ€ํ„ฐ ๋ฆฌํ„ด)

        return (n * factorial(n - 1)); ์ˆœ์„œ๋Œ€๋กœ

return (1 * 1);

return (2 * 1);

return (3 * 2);

return (4 * 6);

return (5 * 24);

return (6 * 120);

return (7 * 720);

return (8 * 5040) = 40320 ์ด ๋œ๋‹ค. 

 

์œ„์™€ ๊ฐ™์ด ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ฉด,(ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๊ฐ€ ์ž๊ธฐ ์ž์‹ ์„ ๋‹ค์‹œ ํ˜ธ์ถœ)

์‚ฌ์‹ค์ƒ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค.

๋ณต๊ท€ ์ฃผ์†Œ๊ฐ€ ์‹œ์Šคํ…œ ์Šคํƒ์— ์ €์žฅ๋˜๊ณ 

ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์œ„ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ์Šคํƒ์œผ๋กœ๋ถ€ํ„ฐ ํ• ๋‹น๋ฐ›๋Š”๋‹ค.

์ด๋Ÿฌํ•œ ํ•จ์ˆ˜๋ฅผ ์œ„ํ•œ ์‹œ์Šคํ…œ ์Šคํƒ์—์„œ์˜ ๊ณต๊ฐ„์„ ํ™œ์„ฑ ๋ ˆ์ฝ”๋“œ๋ผ๊ณ  ํ•œ๋‹ค.

 

ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜๊ฐ€ ์ž๊ธฐ ์ž์‹ ์ด๋ฏ€๋กœ ์ž๊ธฐ ์ž์‹ ์˜ ์‹œ์ž‘ ์œ„์น˜๋กœ ์ ํ”„ํ•˜์—ฌ ์ˆ˜ํ–‰์„ ์‹œ์ž‘ํ•œ๋‹ค.

ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜๊ฐ€ ๋๋‚˜๊ฒŒ ๋˜๋ฉด ์‹œ์Šคํ…œ ์Šคํƒ์—์„œ ๋ณต๊ท€ ์ฃผ์†Œ๋ฅผ ์ถ”์ถœํ•˜์—ฌ ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜๋กœ ๋˜๋Œ์•„๊ฐ€๊ฒŒ ๋œ๋‹ค.

์ˆœํ™˜ํ˜ธ์ถœ์ด ๊ณ„์† ์ค‘์ฒฉ๋ ์ˆ˜๋ก ์‹œ์Šคํ…œ ์Šคํƒ์—๋Š” ํ™œ์„ฑ๋ ˆ์ฝ”๋“œ๋“ค์ด ์Œ“์ด๊ฒŒ ๋œ๋‹ค.

 

ํ•จ์ˆ˜ํ˜ธ์ถœ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ์— ์ˆœํ™˜ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์ด์™€ ๊ฐ™์€ ์ˆœํ™˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 

์ž๊ธฐ ์ž์‹ ์„ ์ˆœํ™˜์ ์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ๋ถ€๋ถ„๊ณผ ์ˆœํ™˜ํ˜ธ์ถœ์„ ๋ฉˆ์ถ”๋Š” ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

๋งŒ์•ฝ ์ˆœํ™˜ ํ˜ธ์ถœ์„ ๋ฉˆ์ถ”๋Š” ๋ถ€๋ถ„์ด ์—†๋‹ค๋ฉด ์‹œ์Šคํ…œ ์Šคํƒ์„ ๋‹ค ์‚ฌ์šฉํ•  ๋•Œ๊นŒ์ง€ ์ˆœํ™˜์ ์œผ๋กœ ํ˜ธ์ถœ๋˜๋‹ค๊ฐ€ ๊ฒฐ๊ตญ ์˜ค๋ฅ˜๋ฅผ ๋‚ด๋ฉด์„œ ๋ฉˆ์ถœ ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ˜๋“œ์‹œ ์ˆœํ™˜ ํ˜ธ์ถœ์—๋Š” ์ˆœํ™˜ ํ˜ธ์ถœ์„ ๋ฉˆ์ถ”๋Š” ๋ฌธ์žฅ์ด ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค.

 

2. ๋ฐ˜๋ณต

์ผ๋ฐ˜์ ์œผ๋กœ ์ˆœํ™˜์€ ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ๋ฐ˜๋ณต์— ๋น„ํ•ด ์ˆ˜ํ–‰์†๋„ ๋ฉด์—์„œ ๋–จ์–ด์ง„๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ˜๋ณต ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. 

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int factorial(int n)
{
    int i, result = 1;
    for (i = 1; i <= n; i++)
    {
        cout << i << "\n";
        result = result * i;
    }
    return result;
}

int main() 
{
    int k = factorial(8);
    cout << k;
    return 0;
}
1
2
3
4
5
6
7
8
40320

 

 

<์ •๋ฆฌ>

์ˆœํ™˜์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ •์˜๊ฐ€ ์ˆœํ™˜์ ์œผ๋กœ ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์— ์œ ๋ฆฌํ•˜๋‹ค.

ํŒฉํ† ๋ฆฌ์–ผ ํ•จ์ˆ˜, ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด, ์ดํ•ญ๊ณ„์ˆ˜ ๊ณ„์‚ฐ, ์ด์ง„ ํŠธ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ด์ง„ ํƒ์ƒ‰, ํ•˜๋…ธ์ด ํƒ‘ ๋ฌธ์ œ๋“ค์€ ์ˆœํ™˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์“ฐ๋Š” ๊ฒƒ์ด ์ž์—ฐ์Šค๋Ÿฌ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์ด๋‹ค.

728x90