반응형
- _21_문제
- 문제028_재귀함수.cpp
- 재귀함수
- for문을 거꾸로 돌린것
- 함수로 반복문을 표현한것
- 함수호출을 가지고 반복문처럼 만든것
- 재귀함수
#include <stdio.h>
#include <stdlib.h>
int r1(){
return 4;
}
int r10(){
return (30 +r1());
}
int r100(){
return (200 + r10());
}
int main(void) {
printf("%d \n", r100()); //234
return 0;
}
- 문제028_재귀함수02.cpp
#include <stdio.h>
#include <stdlib.h>
int r1(){
return 4;
}
int r10(){
int n1 = 30;
int n2 = r1();
return n1 + n2;
}
int r100(){
int n1 = 200;
int n2 = r10();
return n1 + n2;
}
int main(void) {
int n = r100();
printf("%d \n", n);
return 0;
}
- 문제028_재귀함수04_01.cpp
#include <stdio.h>
int func(int num){
if(num == 1)
return 1;
else
return num * func(num - 1);
}
int main(void) {
int i;
//5 4 3 2 1 0 // 5 3 1
for (i = 5; i >= 0; i--){
if(i % 2 == 1) //5 3 1
printf("%d %d\n", i , func(i)); // 5, 120 // 3 , 6 // 1 , 1
}
return 0;
}
- 문제028_재귀함수04_02.cpp
#include <stdio.h>
int func(int num){
if(num == 1)
return 1;
else{
int a = func(num - 1);
int result = a * num;
return result;
}
}
int main(void) {
int i;
for (i = 5; i >= 0; i--){
if(i % 2 == 1)
printf("%d %d\n", i , func(i));
}
return 0;
}
- 문제028_재귀함수04_04.cpp
#include <stdio.h>
int main(void) {
int i;
int j;
int sum;
sum = 1;
j = 5;
while(1){
sum *= j; // 1 * 5 * 4 * 3 * 2 * 1
if(j == 1){
break;
}
j -= 1;
}
printf("%d\n" , sum);
return 0;
}
- 문제028_재귀함수04_05.cpp
#include <stdio.h>
int main(void) {
int i;
int j;
int sum;
for (i = 5; i >= 0; i--){
if(i % 2 == 1){ // 5 3 1
sum = 1;
j = i;
while(1){
sum *= j;
if(j == 1){
break;
}
j -= 1;
}
printf("%d\n" , sum);
}
}
return 0;
}
- 문제028_재귀함수05_01.cpp
#include <stdio.h>
int f(int n){
if(n > 0)
return n % 10 + f(n / 10);
else
return 0;
}
int main(void) {
int result;
result = f(123);
printf("%d\n" , result);
return 0;
}
- 문제028_재귀함수05_03.cpp
#include <stdio.h>
int main(void) {
int n = 123;
int result = 0;
while(true){
if(n > 0){
result += n % 10;
n = n / 10;
}else{
break;
}
}
printf("%d\n" , result);
return 0;
}
- 문제028_재귀함수06_01.cpp
#include <stdio.h>
int func(int n){
if(n % 2 == 1)
n = n - 1;
if (n == 0)
return 0;
return (func(n-2)+n);
}
int main(void) {
int result;
result = func(19);
printf("%d\n" , result);
return 0;
}
- 문제028_재귀함수07_01.cpp
#include <stdio.h>
int func(int i, int j){
if(i < 3) i = j = 1;
else{
i = i-1;
j = j-1;
printf("%d %d" , i, j);
return func(i, j);
}
}
int main(void) {
func(5, 14);
return 0;
}
- 문제028_재귀함수08_01.cpp
#include <stdio.h>
int recursion(int n){
if(n < 5) return 1;
else if(n % 5 == 1)
return n + recursion(n-1); // 1 6 11 16
else recursion(n-1);
}
int main(void) {
int n = recursion(16);
printf("%d\n" , n);
return 0;
}
- 문제028_재귀함수09_01.cpp
#include <stdio.h>
int funa(int n){
if(n > 1)
return (n + funa(n - 2));
else
return (n % 2);
}
int main(void) {
// 9 12
printf("%d %d\n" , funa(5) , funa(6));
return 0;
}
- 문제028_재귀함수10_01.cpp
#include <stdio.h>
int funa(int n){
printf("%d" , n);
if(n > 1)
funa(n - 1);
printf("%d\n" , n); // 3 2 1 1 2 3
}
int main(void) {
funa(3);
return 0;
}
- 문제028_재귀함수11_01.cpp
#include <stdio.h>
int fun(int a, int b, int c){
if(c != 0){
fun(b, a + b, c-1);
printf("%d %d %d\n" , a, b, c);
//2 3 1
//1 2 2
//1 1 3
}
}
int main(void) {
int i = 1;
int j = 1;
int k = 3;
fun(i, j, k);
return 0;
}
반응형
'코딩 > C언어' 카테고리의 다른 글
_21_문제 => 문제027_포인터와함수05 ~ 문제027_포인터와함수14 (1~3) (0) | 2025.07.17 |
---|---|
_21_교재 => 수업027_포인터와함수 , _21_문제 => 문제027_포인터와함수~문제027_포인터와함수04 (0) | 2025.07.15 |
수업026_구조체 (0) | 2025.07.11 |
문제024_포인터와이차배열 ~ 문제024_포인터와이차배열07 (0) | 2025.07.10 |
수업024_포인터와이차배열 (11) | 2025.07.09 |