c_cpp 按位加法/乘法,重新访问函数式编程(?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 按位加法/乘法,重新访问函数式编程(?相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<assert.h>

int add(int a, int b) {
    if (b == 0) return a;
    int sum = a ^ b;
    int carry = (a & b) << 1;
    return add(sum, carry);
}

int multiply(int a, int b) {
    if (!(a && b)) return 0;
    // optimize for recursion level
    if (a < b) return multiply(b, a);
    return (b & 1) ? add(a, multiply(a, b >> 1) << 1) : multiply(a, b >> 1) << 1;
}

int main() {
    for (int i = 1; i <= 9; i++) {
        for (int j = 1; j <= 9; j++) {
            assert(i + j == add(i, j));
            assert(i * j == multiply(i, j));
        }
    }
}

以上是关于c_cpp 按位加法/乘法,重新访问函数式编程(?的主要内容,如果未能解决你的问题,请参考以下文章

函数式编程中不动点函数原理和实现

c_cpp 我们的程序使用加法运算符+来将两个数相加。编写程序使乘法运算符*,来打印两个数的积。

高精度运算 加法减法

Python使用列表推导式实现九九乘法和九九加法表

高精度乘法和除法

数据结构线性结构 —— 编程作业 02 :一元多项式的乘法与加法运算