【问题描述】:
由于题目的要求,我们不能直接使用乘除法、循环等,因此上面的方法不太适用。 那么我们应该怎么做呢?
递归实现,一般的递归写法就是上边代码的写法,要想不使用if,else等判断条件使用递归我们只能另想办法找到递归终止条件和逼近条件。
编程求1+2+3+…+n
要求:不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句。
【解决思路】:
这个题目如果没有加要求对每一个都比较熟悉,也都可以求解。我们能够想到的方法有
(1)递归
(2)循环累加
(3)等差数列求和公式
【解决思路】:
这个题目如果没有加要求对每一个都比较熟悉,也都可以求解。我们能够想到的方法有
(1)递归
(2)循环累加
(3)等差数列求和公式
例如:
#include<stdio.h>
#include<windows.h>
int Sum(int n)
{
if (1 == n)
{
return 1;
}
return n + Sum(n - 1);
}
int main()
{
int num = 3;
int ret=Sum(num);
printf("%d\n", ret);
system("pause");
return 0;
}
由于题目的要求,我们不能直接使用乘除法、循环等,因此上面的方法不太适用。 那么我们应该怎么做呢?
递归实现,一般的递归写法就是上边代码的写法,要想不使用if,else等判断条件使用递归我们只能另想办法找到递归终止条件和逼近条件。
代码如下:
#include<stdio.h>
#include<windows.h>
int Sum(int n)
{
int result = 0;
n && (result = n + Sum(n - 1));
//这里可以就很好的避免了使用if判断
return result;
}
int main()
{
int num = 0;
scanf_s("%d", &num);
int ret=Sum(num);
printf("%d\n", ret);
system("pause");
return 0;
}