用户输入浮点值的累积积

时间:2018-10-09 01:07:05

标签: c recursion

对于这似乎是家庭作业,我深表歉意,但是我正在努力理解C语言中的递归。

我试图解决一个问题,我必须确定n个浮点数的累加乘积,并且在每次调用递归函数时都必须将新数字读入计算机。 (Schaums理论大纲7.49d的问题和用C编程的问题) 我的解释是,每次调用递归函数时,用户都必须输入一个新值,并将该值与上一个值相乘。

p = (f1 * f2 * f3 * ... * ft)

我终于可以将这个解决方案拼凑起来:

`

#include <stdio.h>

float product(int n);   /* function prototype */

int main()
{
    printf("This program returns the culmulative product of\n"
            "each number entered into the computer.\n");
    int n;
    printf("Enter how many numbers (n): ");
    scanf("%d", &n);

    printf("culmulative product >> %2.2f", product(n));

    printf("\n");
    return 0;
}

float product(int n)
/* this function multiplies each number entered, recursively. */
{
    float sum = 1.0; float number;
    if(n > 0)
    {
        printf("number = ");
        scanf(" %f", &number);
        sum = sum * number;
        printf("sum > %f\n", sum);
        number = product(n - 1);
        return(sum * number);
    }
}`

但是我仍在努力理解每个递归步骤中正在发生的事情,以及为什么我必须number = product(n - 1)return (sum * number);

有人可以帮我解释一下吗?

0 个答案:

没有答案