without haste but without rest

[C / 자료구조] 1주차 과제 - 재귀 본문

Homework

[C / 자료구조] 1주차 과제 - 재귀

JinungKim 2020. 4. 4. 16:21

제곱 연산의 과정을 출력하는 과제

 

#define CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int count = 0;
double res;

void depth(int n) {
    for (int i = 0; i < n; i++) printf("    ");
}

double power(double d, int n) {
    if (n > 0) {
        depth(count++);
        printf("power(%.3lf, %d)\n", d, n);
    }
    if (n == 0) {
        count--;
        return 1;
    }
    else if (n % 2 == 0) res = power(d * d, n / 2);
    else res = d * power(d * d, (n - 1) / 2);
    if (n > 1) {
        depth(--count);
        printf("power(%.3lf, %d) = %.3lf\n", d, n, res);
    }
    if (count == 0) printf("%.3lf ^ %d = ", d, n);
    return res;
}

int main(void)
{
    double d;
    int n;
    scanf_s("%lf %d", &d, &n);
    printf("%lf", power(d, n));
    return 0;
}

 

 

Comments