为程序创建逻辑,该程序不断提示用户输入数值,直到用户输入0。应用程序依次将该值传递给一个方法,该方法计算从1到输入数字(包括输入数字)的所有整数的和,以及一个方法计算所有整数到输入数字的乘积。
到目前为止,这就是我所拥有的:
BEGIN
MAIN MODULE BEGIN
Declare enteredNumber as Integer
Do While (enteredNumber != 0)
DISPLAY "Enter a positive number (0-EXIT) : "
input enteredNumber
sumModule(enteredNumber)
OUTPUT enteredNumber
productModule(enteredNumber)
OUTPUT enteredNumber
EndWhile
END MAIN MODULE
sumModule(enteredNumber)
IF enteredNumber = 1 THEN
RETURN 1
ELSE
RETURN enteredNumber + sumModule(enteredNumber - 1)
productModule(enteredNumber)
IF enteredNumber = 1 THEN
RETURN 1
ELSE
RETURN enteredNumber * productModule(enteredNumber -1)
声明sum模块,它有1个整数输入和1个整数输出。
sumModule(enteredNumber)
如果输入为1,则输出为1
IF enteredNumber EQUALS 1
THEN
RETURN 1
否则,返回总和模块的输入和输出的总和。这里的键,它传递1比输入少,所以最终模块会退出。
ELSE
RETURN enteredNumber + CALL sumModule(enteredNumber - 1)
C++/C#语法
int sumModule(int n)
{
if (n == 1)
return 1;
return n + sumModule(n--);
}
int productModule(int n)
{
if (n == 1)
return 1;
return n * productModule(n--);
}
递归拯救了这一天!(和手腕)http://en.wikipedia.org/wiki/Recursion