首页 > 其他 > 详细

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

时间:2014-03-19 06:42:39      阅读:398      评论:0      收藏:0      [点我收藏+]

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

不使用

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

进行从1到n的累加运算

其中n是一个变量。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#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));
}

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

1
2
3
4
5
6
7
8
9
10
11
#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);
}

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

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

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

函数查表、逗号运算符 解决数学运算问题,布布扣,bubuko.com

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

原文:http://www.cnblogs.com/zhuxiaoxiao/p/3608578.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!