和田网站制作,无限动力网站,用自己服务器做网站用备案,郴州吧一.题目
求123...n#xff0c;要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句#xff08;A?B:C#xff09;。
二.题目剖析
首先题目要求不能用乘除#xff0c;那么#xff08;首相末项#xff09;*项数/2就不能用#xff0c;其次不…一.题目
求123...n要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句A?B:C。
二.题目剖析
首先题目要求不能用乘除那么首相末项*项数/2就不能用其次不能用循环最后不能用条件语句,开关语句和条件运算符那么想要求一个位置长度的数列和就一定要让操作数“动起来”想来想去也就只有递归还能试一试了但递归要有限制条件不过这个条件不能用条件语句和条件运算符来表现那么只能想想其他的逻辑运算符好像也只有用逻辑运算符的短路特性才能限制递归。
三.代码实现
static int a 0;
int fun(int n)
{int x (n) (fun(n - 1));return a n;;
}
int main()
{int n;scanf(%d, n);printf(%d, fun(n));return 0;
}
四.代码剖析
首先定义一个全局变量a或者在函数内部定义一个静态变量a这两种做法都行目的是为了防止函数在被调用完一次后变量a被初始化然后利用逻辑与运算短路的特性如果左操作数为0将不再计算右操作数这样如果把递归式放到右操作数这样如果左操作数为0递归就会结束。