不用循环和递归计算1+2+3+...+100的值

不使用循环递归的方式求1~n的和 今天在牛客网上看到一道面试题,感觉很有意思自己也思考了很长时间,希望可以分享下来,题目是这样描述的:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。刚开始的时候我想1+2+3+…+n不正好是等差数列吗?直接使用等差数列的求和公式不就可以吗?n*(n+1)/2,但是公式中依然有乘法啊,所以这个想法被pass掉 阅读详情

利用类的静态成员变量以及类的构造函数实现。

代码:

#include <iostream>

using namespace std;

class A
{
	public:
		A();
		~A(){};
		static int getSum();
	private:
		static int n;
		static int sum;
}; 

int A::n = 0;
int A::sum = 0; 

A::A()
{
	n++;
	sum += n;
}
int A::getSum()
{
	return sum;
}
int main()
{
	A *pa = new A[100];
	delete [] pa;
	cout<<A::getSum()<<endl;
	getchar();
}

利用模板元编程:

#include <iostream>
 
template<unsigned int N>
struct A
{
    enum
    {
        value = A<N-1>::value + N
    };
};
 
template<>
struct A<1>
{
    enum
    {
        value = 1
    };
};
 
int main()
{
    std::cout<<A<100>::value<<std::endl;
    getchar();
    return 0;
}
REF:

1,http://bbs.youkuaiyun.com/topics/290013313

实现JavaScript递归求解1到100的和 递归是一种在程序设计语言中被广泛使用的技术,指的是函数直接或间接地调用自身。这种直接或间接的函数调用形成了一个函数调用链,如果这个链条一直持续下去,没有明确的终止条件,那么会导致栈溢出错误。因此,递归函数都需要有一个基本情况(Base Case),在这一情况下,函数不再调用自身,而是返回一个结果,使递归调用链得以终止。递归的基本原理可以通过“汉诺塔问题”来简明地体现。 阅读详情

相关推荐

编程实现计算:1!+2!+3!+……+N!的值,要求定义并调用函数计算N!。

编程实现计算:1!+2!+3!+……+N!的值,要求定义并调用函数计算N!。

面试题——不用循环计算1+2+...+100之和

前几天看到校招的面试题,要求不要用循环计算出1+2+3...+100之和。当我看到这道题的时候第一反应就是用递归写,能用循环的程序不一定能用递归去写,但是能用递归的程序一定可以用循环写出。所以递归和循环是相铺相成的。        这里我也不知道递归是不是面试考官想要的最优写法,但是这题至少没用循环。这里我写完后修改了下代码,不仅仅是只计算1+2+3...+100的程序,输入一个最小的数字(如5

poison_biti的博客 2208

计算 S=1!+2!+3!+...+N! C语言代码

课程的随堂作业,C语言的,用dev就能运行,萌新代码,勿喷,仅仅帮助不想写作业的朋友方便一下,反正老师也不会仔细检查的

面试题3 求1+2+3+...+100=?(不能使用循环和递归)

求1-100的和的三种方法

w2765076540的博客 284

[递归调用]从1+2+3+...+n的值.cpp

自做程序迪斯科建立发 很提高友邦住 可 寄生蜂可怜见 数据库飞机 恺撒急口令飞机

MQTT与物联网平台(一):基础知识和设备接入物联网平台的实现(以华为云为例)

本文简单介绍了MQTT的基础知识和使用方法,以蓝牙WIFI双模芯片W801作为硬件设备,接入到华为云。

weixin_50622833的博客 1万+

leetcode 326. Power of Three(不用循环或递归)

leetcode 326. Power of Three(不用循环或递归) Given an integer, write a function to determine if it is a power of three. Follow up: Could you do it without using any loop / recursion? 题意是判断一个数是否是3的幂,最简单的也最容易想...

weixin_30498921的博客 214

《湖科大教书匠计算机网络》学习笔记总目录+思维导图

本篇文章是对《湖科大教书匠计算机网络》所有知识点的笔记总结归档和计算机网络的思维导图

weixin_73077810的博客 8225

C++ 不使用循环或递归,打印0到999的整数类型

看视频教程时看到的,单纯码下来记录一下 #include <iostream> using namespace std; #define A(x) x;x;x;x;x;x;x;x;x;x; int main() { int n = 0; A(A(A(printf("%d ",n++)))); //相当于把printf命令复制粘贴1000次,然后按照从左往右运行...

PtaQ的博客 688

用Python+PyTorch实现DQN无人机避障:从环境搭建到实战训练(附完整代码)

本文详细介绍了如何使用Python和PyTorch框架,基于深度强化学习中的DQN算法,实现一个无人机自主避障系统。内容涵盖从自定义环境搭建、DQN智能体核心算法实现,到完整的训练流程与超参数调优,并提供了可视化演示与进阶优化方向,为开发者提供了从理论到实践的完整指南。

kubernetes8ctl的博客 639

webview腾讯x5内核离线安装

离线集成腾讯TBS浏览器服务,彻底解决官方下载限流问题,永久免费

观千剑而后识器,操千曲而后晓声。 7908

运用递归计算1-100的和

递归的特点: 1、函数自己调用自己 2、递归函数一般情况下有参数 3、递归函数一定有return,但是return后面不一定跟表达式 递归:循环能做到的事情,递归都能做。 最强王者法则: 1、找出临界值,无需计算就能够得出的值。 2、找这一次和上一次的关系 3、假设这个函数已经写好,写出第n次和第n-1次的关系公式。 sum(100) = sum(99) + 100; sum(n) = sum(n...

可惜 1万+

项目安全等保测评加固手册

安全等级测评的目的是通过对目标系统在安全技术及管理方面的测评,对目标系统的安全技术状态及安全管理状况做出初步判断,给出目标系统在安全技术及安全管理方面与其相应安全等级保护要求之间的差距。测评结论作为委托方进一步完善系统安全策略及安全技术防护措施依据!!

菜鸟运维升级之路 2416

题目:利用递归求1+2+3...100的和

在面试的时候遇到了这样的一道笔试题目,就是利用递归求出1到100的和,也就是1+2+3+........+100。 怎么说呢,递归是一种思想,用大白话来说,就是自己调用自己。 如一个方法A(),然后在方法A()中再次调用自己,但是利用递归的时候特别需要注意的就是跳出递归的条件,否则的话就会出现死循环的情况,也就是一直在执行的某一个方法。 以下为简单的代码实现: package com.ak

说:/~不了的专栏 1万+

深度解析长鑫G5 DRAM工艺的技术逻辑与微缩边界

长鑫存储G5 DRAM平台通过多重图形化、45:1高深宽比电容与外围HKMG技术,突破先进光刻受限瓶颈,在11.95 nm有源区半间距下实现阵列微缩与电容结构优化。其核心意义不在于对标国际节点,而在于系统性解决“尺寸缩小—电荷保持—外围跟进而”三大矛盾,展现国产DRAM在无EUV条件下推进先进制程的工艺整合能力。

硬核科技 34

【VoxCPM2】在Windows上从零搭建VoxCPM2 语音生成和语音克隆AI算法

建议你了解清楚VoxCPM2,再来考虑是否需要自己在本地搭建。

AnChenliang_1002的博客 750

js 用递归计算1-100的和

递归,是指在函数的定义中使用函数自身的方法。所以,我们必须要找出递归的结束条件,不然的话,会一直调用自己,进入无底洞。也就是说,我们需要找出当参数为啥时,递归结束,之后直接把结果返回,请注意,这个时候我们必须能根据这个参数的值,能够直接知道函数的结果是什么。 function add(num1,num2){ let num = num1 + num2 //num = 3 //num = 6 //num = 10... if(num2>=100){

m0_62049404的博客 3354

【气候极端指数】MATLAB计算各种气候极端指数

简介各类气候极端指数,及其MATLAB计算代码

WW、forever的博客 4917

Java递归计算1-100之间的的和 分析方法体的在栈内存中的压栈(入栈)和弹栈

使用递归计算1-n之间的和 定义一个方法,使用递归计算1-n之间的和 已知: 最大值:n 最小值:1 计算: 1+2+3+...+(n-1)+n=????? 使用递归的明确条件 1、递归的结束条件 获取到1的时候结束 2、递归的目的 获取下一个被加的数字(n-1) 使用递归计算1-100的累加值代码: package com.baidu; public class SumDecursion { public static...

崔凯洋的博客 771

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

递归计算1+100的结果

function sum($n){ //5 if($n == 1){ return 1; } $sum = $n+sum($n-1);//5+sum(4) 4+sum(3) 3+sum(2) 2+sum(1) return $sum; } //echo sum(100); function sum1($n){ for($sum=0,$i=1;$i<=$n;$i++){

码农富哥 6186

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

C语言 计算1+1/2+1/3+…+1/n的值(常规计算、递归计算)

C语言 计算1+1/2+1/3+…+1/n的值(常规计算、递归计算)

kim的博客 2万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

UVa 100 3n+1 Problem

本文介绍了3n+1问题的求解方法。该问题要求计算给定区间内所有整数的最大循环节长度,即按照特定规则(奇数乘3加1,偶数除以2)逐步变为1所需的步骤数。解题时需要注意:1) 使用long long避免中间结果溢出;2) 处理输入可能倒序的情况;3) 采用记忆化技术优化性能。文章提供了完整的C++实现代码,通过缓存已计算结果显著提高了效率。虽然该猜想尚未被严格证明,但算法能正确求解测试范围内的所有情况。题目虽简单,但涉及溢出处理和优化技巧,是很好的编程练习。

寂静山林 983

求1+2+3+...+n&&不用加减乘除做加法

求1+2+3+…+n 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 解题思路 因为无法使用乘除法,所以n(1+n)/2就不能使用,不能使用for和while,所以循环无法使用 利用逻辑与的短路实现递归终止 当n==0,(sum>0)&&((sum+=Sum_Solution(–n)...

weixin_41676282的博客 572

PHP商城笔记(递归与迭代1) —— 初识递归计算1到100的和的规律

对于递归:要先会写,再去理解 // ==题1:写一个sum($n),求1-&amp;amp;amp;amp;gt;n的和== // function sum($n) { for($sum=0,$i=1;$i&amp;amp;amp;amp;lt;=$n;$i++) { $sum += $i; } return $sum; } echo sum(100); // ==进化== // function s...

烟敛寒林的博客 1601

指针破解(题记)求1+2+3+……n的值

题目要求 计算1+2+3+4……n的值,要求不能使用所有的判断包括三目操作符和迭代(循环) 这个题目可谓杀伤力极大。对于一个初阶C noob,丝毫不亚于关门打狗。 但是稍加思索以后,指针就是我打开门的钥匙。 分析 不能使用循环和判断 简短有力的一句话已经灭了99%的可能性,倘若可以使用循环,那这个题目的解法数不胜数,在把for while等等语句关在门外后,我们似乎还可以...

Caco 820

c# 计算1-100之间的所有整数的和

求1-100所有整数和: 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 int sum= GetSum(1,100); 6 Console.WriteLine("1-100之间所有整数和{0}"...

dazhexuan0219的博客 3686
上一篇: 斐波那契(Fibonacci)数列的求法
下一篇: 数组的循环右移
Scandinavians
博客等级 码龄19年 36粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值