对于这似乎是家庭作业,我深表歉意,但是我正在努力理解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);
有人可以帮我解释一下吗?