C# 计算1-2+3-4+5……+m

循环

方法一

定义一个表示正负的变量,循环的时候改变状态

static int SumMath(int m)
{
    if (m <= 1)
    {
        return m;
    }
    int sum = 0;//储存计算结果
    int flag = 1;//符号状态
    for (int i = 1; i <= m; i ++)
    {
        sum = sum + i * flag ; 
        flag  = -flag ;
    }
    return sum;
}

方法二

判断当前变量能够被2整除

static int SumMath(int m)
{
    if (m <= 1)
    {
        return m;
    }
    int sum = 0;//储存计算结果
    for (int i = 1; i <= m; i++)
    {
    	//i不能被2整除此时sum+i
        if (i % 2 != 0)
        {
            sum += i;
        }
        else
        {
            sum -= i;
        }
    }
    return sum;
}

递归

方法一

根据-1的n次方计算当前值的正负,统计和

static int SumMath(int m)
{
    if (m <= 1)
    {
        return m;
    }
    return (int)Math.Pow(-1, m - 1) * m + SumMath(m - 1);
}

方法二

按位与计算当前值的正负,统计和

static int SumMath(int m)
{
    if (m <= 1)
    {
        return m;
    }
    return SumMath(m - 1) + m * ((m & 1) * 2 - 1);
}

方法三

将计算次数、状态、和总和当做参数传进方法

static int SumMath(int m, int cursor = 1, int flag = 1, int sum = 0)
{
    if (current > m)
    {
        return sum;
    }
    return SumMath(m, cursor + 1, -flag, sum + cursor * flag);
}

其他

方法一

(1-2) + (3-4) + (5-6)……

private int SumMath(int m)
{
    if (m <= 1)
    {
        return m;
    }
    if (m % 2 == 0)
    {
    	//当m除以2求余为0时 总和为 m/2个-1相加
        return -m / 2;
    }
    else
    {
    	//总和为m 减去 (m-1)/2个-1
        return (m+1)/2;
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值