【发布时间】:2019-09-29 22:29:14
【问题描述】:
我正在做一些只使用基本运算的作业。我需要编写一个给定正数的函数,计算该数字的整个一半。
我的问题是:
int half(int x, int y)
{
return x == 0 ? y : half(x-1-1, y+1) , x == 1 ? y : half(x-1-1, y+1);
}
我不知道是否存在任何运算符或连接这些计算的东西。在这行代码中,我尝试使用 ( , )。
我尝试使用 ( | ) 和 ( & ) 替换 ( , )。但是我有很多错误。
#include <stdio.h>
int sum(int x, int y)
{
return y == 0 ? x : sum(x+1, y-1);
}
int half(int x, int y)
{
return x == 0 ? y : half(x-1-1, y+1) , x == 1 ? y : half(x-1-1, y+1);
}
int main(void)
{
int x;
int y=0;
scanf("%d", &x);
int z = half(x, y);
printf("%d\n", z);
return 0;
}
在此代码中,我希望 6/2 的输出为 3,而 5/2 的输出为 2。
注意:函数 sum 虽然什么也没做,但我无法删除,因为作业说不要从代码中删除,也许我需要使用它。
【问题讨论】:
-
如果您了解
? :,那么您可能已经了解了if语句,对吧?它们会更容易阅读和书写。 -
@uneven_mark 我知道
if,但我还没有在课堂上学习,所以我们不能使用它。 -
half的第二个参数有什么意义?这个作业看起来很复杂。 -
@JL2210 第二个参数是计算奇数,如 1、3、5 等...
-
他们在教递归和三元运算符,但还没有涵盖
if???
标签: c recursion elementary-functions