zoukankan      html  css  js  c++  java
  • 奇葩求和问题

    今天看到看个有意思的求前n项和的问题,奇葩点在于求和不能用 if、 for、while、do while、等差数列,这些知识。 可以利用递归来做,一般递归方法在此略过。只是感觉下面这个代码方法有点巧妙,所以分享下。
    #include
    typedef int (*fun)(int); //定义一个返回值为int 带参数int类型的函数指针
    fun judge[2];
    int end(int a)
    {
    	return 0;
    }
    int sum(int a)
    {
    	return a+judge[!!a](a-1);//传统递归,judge[!!a]亮点
    }
    int main()
    {
    	int n,m;
    	scanf("%d",&n);
    	while(n--)
    	{
    		judge[0]=end;// 存放函数地址
    		judge[1]=sum;
    		scanf("%d",&m);
    		printf("%d
    ",sum(m));
    	}
    	return 0;
    }
    
    typedef可以让你从现有类型中创建一个新类型 格式: typedef existing-type new-type 具体用法:
    1. 定义类型                                                                                                                 typedef int Apple                                                                                                Apple  为 int  别名
    2. 为复杂声明定义别名,简化美观代码。                                                                    原声明:void (*b[10]) (void (*)());变量名为b,先替换右边部分括号里的,pFunParam为别名一: typedef void (*pFunParam)(); 再替换左边的变量b,pFunx为别名二: typedef void (*pFunx)(pFunParam); 原声明的最简化版: pFunx b[10];
           
  • 相关阅读:
    【转】几种现代GPS测量方法和技术
    【转】GPS连续运行单参考站解决方案
    【转】IGS相关
    【转】时标与历法
    【转】matlab针对不同格式文件的读写
    matlab判断文件或文件夹是否存在
    matlab获取文件夹中的所有文件名(dir)
    fopen fclose feof fgets fetl
    结合find和cp批量查找文件并复制到指定文件夹中
    Android开发--环境配置
  • 原文地址:https://www.cnblogs.com/NYNU-ACM/p/4236848.html
Copyright © 2011-2022 走看看