计数次数递归被称为C.

时间:2014-10-22 16:38:22

标签: c variables recursion count average

我有一个计算几何平均值的函数(项的乘积的第n个根,其中n是项的数量),我遇到的唯一问题就是弄清楚如何跟踪多少个术语曾经有。我唯一能想到的就是全局变量,但我知道我不应该这样做。没有全局变量我怎么能这样做?

float count;
float geometricMean(float n) {
    char again; 
    float j;
    printf("Input a number:  ");
    scanf("%f", &j);
    printf("Another number? (y/n)  ");
    scanf(" %c", &again);
    if (again == 'y') {
        j *= geometricMean(n+1);
        if (n==1)
            return pow(j, (1/count));
        else {
            return j;
        }
    }
    else {
        count = n;
        return j;
    }
}

1 个答案:

答案 0 :(得分:4)

使用静态变量。静态变量不会在函数调用之间发生变化。 在函数开始时,写下类似的内容:

float geometricMean(float n) {
    static int count = 0;
    count ++;
    // Rest of the code;
}

每次调用你的函数时,计数都会增加1(它不会再回到0)。

转到此处:What does "static" mean? 如果你想了解更多关于静态变量的信息。

编辑:请不要使用静态变量,就像它是全局的一样,只是范围较小。这将导致不良后果!如果您计划在函数的每次迭代中更改静态变量的值,就像我在此处所做的那样,请确保您清楚地了解这些更改是什么,并在定义静态后立即使用它们。