【问题标题】:Is there any operator which I can use to attach 2 calculations?是否有任何运算符可用于附加 2 个计算?
【发布时间】: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


【解决方案1】:

您可以使用|| 将它们放在一起:

int half(int x, int y)
{
    return x == 0 || x == 1 ? y : half(x-1-1, y+1);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 2011-05-04
    相关资源
    最近更新 更多