编程算法:求1+2+...+n(函数指针) 代码(C++)

题目: 求1+2+...+n, 要求不能使用乘除法\for\while\if\else\switch\case等关键字及条件判断语句(A?B:C).

可以使用函数指针求解, 通过递归调用, 每次递归值减1, 使用求反运算(!), 即非0为0, 0为1.

代码:

/*
 * main.cpp
 *
 *  Created on: 2014.7.12
 *本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/
 *      Author: spike
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>  

typedef size_t (*fun)(size_t);  

size_t Sum_T(size_t n) {
    return 0;
}  

size_t Sum(size_t n) {
    static fun f[2] = {Sum_T, Sum};
    return f[!!n](n-1) + n;
}  

int main(void)
{
    size_t result = Sum(10);
    printf("result = %d\n", result);
    return 0;
}

输出:

result = 55

作者:csdn博客 Caroline-Wendy

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索指针
, 递归
, 函数
, 求代码
, include
, return
, 求代码 代码
, result
, c++编程珠玑算法
求算法 C
c 函数指针 代码、c 函数指针、c 成员函数指针、c语言函数指针、c 函数返回指针,以便于您获取更多的相关知识。

时间: 2024-08-01 19:43:21

编程算法:求1+2+...+n(函数指针) 代码(C++)的相关文章

编程-跪求大神帮忙看下代码,错了不晓得怎么改哦

问题描述 跪求大神帮忙看下代码,错了不晓得怎么改哦 switch (uMsg) { case WM_CHAR: char szChar[20]; sprintf(_T(szChar),_T( "char code is %d"), wParam); 错误 1 error C2065: "LszChar": 未声明的标识符 IntelliSense: "const wchar_t *" 类型的实参与 "const char *"

java算法-求可变参数的排列组合代码思想?就是 m从选n个 作为组合 m是可变的 n也是?如何解

问题描述 求可变参数的排列组合代码思想?就是 m从选n个 作为组合 m是可变的 n也是?如何解 求可变参数的排列组合代码思想?就是 m从选n个 作为组合 m是可变的 n也是?如何解 解决方案 这个简单,就是递归. 从m选n的算法可以分解为 for each 遍历m,选取1个+ (从剩下的m-1个元素中任选n-1个) 直到从1个元素中选择1个.

编程算法:求1+2+...+n(函数继承) 代码(C++)

题目: 求1+2+...+n, 要求不能使用乘除法\for\while\if\else\switch\case等关键字及条件判断语句(A?B:C). 可以使用函数继承, 通过递归调用, 每次递归值减1, 使用求反运算(!), 即非0为0, 0为1. 代码: /* * main.cpp * * Created on: 2014.7.12 *本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/ * Autho

标C编程笔记day06 动态分配内存、函数指针、可变长度参数

动态分配内存:头文件 stdlib.h     malloc:分配内存     calloc:分配内存,并清零     realloc:调整已分配的内存块大小     示例:         int *p=(int *) malloc(3*sizeof(int));//分配内存,成功返回首地址,失败返回NULL         free(p);p=NULL;//释放分配的内存,并修改指针的值,避免出现野指针(指向一个地址,但地址已被回收) const 与指针:     const int *p;

c++-扫除算法求逆矩阵是神马!!!!扫除算法求逆矩阵是神马?

问题描述 扫除算法求逆矩阵是神马!!!!扫除算法求逆矩阵是神马? 代码怎么写,扫除算法求逆矩阵怎么写!!!谢谢啦!!!哪位大神指导我一下!!! 解决方案 矩阵求逆的算法扫除算法(sweep)求逆矩阵矩阵求逆的快速算法---------------------- 解决方案二: lz可参考 : http://blog.csdn.net/zmazon/article/details/8241348

想要深入学习编程,求推荐语言-目的是算法实现和数据分析

问题描述 想要深入学习编程,求推荐语言-目的是算法实现和数据分析 目前懂得Python, Vb.Net, R的基本知识,并稍微懂得一些C# 实验室大概要向数据处理方面靠一靠,主要涉及的是地理数据库(关系数据库) 最基本需要是实现功能,例如spatial data clusering啊,定制的决策树啊一类的,也有可能涉及到批处理和其他的底层地理数据库处理. 以后可能有一定图形界面的需求. 我应该主要深入学习哪一门语言比较合适我的需求? 或者有什么其他的语言推荐吗 解决方案 推荐python,现在p

新手请问,Matlab里有关于卷积神经网络的BP算法可直接调用的函数或文件吗?麻烦大神求告知

问题描述 新手请问,Matlab里有关于卷积神经网络的BP算法可直接调用的函数或文件吗?麻烦大神求告知 对Matlab不熟,在学习卷积神经网络BP算法,想请问Matlab里有没有可调用的文件或函数直接拿来用的 解决方案 内置有这个函数的,具体实现的话我不是很了解.

C++编程中的函数指针初步解析_C 语言

1.定义每一个函数都占用一段内存单元,它们有一个起始地址,指向函数入口地址的指针称为函数指针.2.语法指向函数的指针变量的一般定义形式为: 数据类型 (*指针变量名)(参数表);3.说明1) 函数指针的定义形式中的数据类型是指函数的返回值的类型. 2) 区分下面两个语句: int (*p)(int a, int b); //p是一个指向函数的指针变量,所指函数的返回值类型为整型 int *p(int a, int b); //p是函数名,此函数的返回值类型为整型指针 3) 指向函数的指针变量不是

详解C语言编程中的函数指针以及函数回调_C 语言

函数指针: 就是存储函数地址的指针,就是指向函数的指针,就是指针存储的值是函数地址,我们可以通过指针可以调用函数. 我们先来定义一个简单的函数: //定义这样一个函数 void easyFunc() { printf("I'm a easy Function\n"); } //声明一个函数 void easyFunc(); //调用函数 easyFunc(); //定义这样一个函数 void easyFunc() { printf("I'm a easy Function\n