初学者学到递归函数,现要求编写三种代码:
1. 输入一个整数n,用递归函数按从小到大的顺序显示出0-n之间的奇数;
2. 输入一个整数n, 用递归函数计算0-n之间所有奇数的和;
3. 输入一个整数n, 用递归函数计算0-n之间所有奇数的乘积。
题目没有说清楚之间是否包含了n本身,假设不包含。
#include "stdio.h"
void foo1(int n, int acc = 1)
{
if (n > acc)
{
printf("%d ", acc);
foo1(n, acc + 2);
}
}
long foo2(int n, int acc = 1, long sum = 0)
{
if (n > acc)
return foo2(n, acc + 2, sum + acc);
return sum + acc;
}
long foo3(int n, int acc = 1, long acc2 = 1)
{
if (n > acc)
return foo3(n, acc + 2, acc2 * acc);
return acc2 * acc;
}
int main()
{
int n;
scanf("%d", &n);
foo1(n);
printf("\nsum = %d", foo2(n));
printf("\nproduct = %d\n", foo3(n));
return 0;
}