函数查表、逗号运算符 解决数学运算问题

今天在网上无意中看到有人提出一个趣味性问题:

不使用

乘除操作,位操作,if-else,for,while,switch,?:三目运算符,全局变量,模版,标准库函数

进行从1到n的累加运算

其中n是一个变量。

思考了会没有头绪,然后看了许多程序员的回帖,然后看到了被自己冷落了许久的东西---函数查表

#include <stdio.h>
typedef int(*F)(int);
int f0(int n)
{
	return 0;
}

int fn(int n)
{
	F f[2] = { f0, fn };
	return n + f[n>0](n - 1);
}

int main()
{
	printf("%d\n", fn(10));
}

有人说时代在进步,这些古老的东西已经没有利用价值了,可我觉得多明白一种方法也许会对以后的编程中多一种解决的方案,谁又能说这种解决方案不行呢?

#include <stdio.h>
int sum(int n)
{
	int t = 0;
	return n && (t = sum(n - 1)), t + n;
}
int main()
{
	int a=sum(10);
	printf("%d",a);
}

 这是一段利用递归操作执行数据累加的代码,这一段代码用到了逗号运算符,也是大家不常用到的东西

return n && (t = sum(n - 1)), t + n;

 这一句n先与(t = sum(n - 1))进行逻辑与,然后再进行t+n操作,返回的t+n的值

 

转载于:https://www.cnblogs.com/zhuxiaoxiao/p/3608578.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值