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


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

    不使用

    乘除操作,位操作,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
    ", 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的值

  • 相关阅读:
    整合SSH遇到的问题
    学习动态代理实现业务层的事务控制遇到的问题
    docker局域网独立IP外网访问配置
    第23次CSP-D题解法
    Nordic Bluetooth 切换到DFU Mode
    MySQL事务、锁和MVCC
    深拷贝和浅拷贝的区别是什么?
    python是如何进行内存管理的
    数据库的事务
    斐波那契数列
  • 原文地址:https://www.cnblogs.com/zhuxiaoxiao/p/3608578.html
Copyright © 2020-2023  润新知