什么好的网站学做食品,vi品牌形象设计案例,中医医院网站建设需求,茶叶手机网站#x1f493; 博客主页#xff1a;倔强的石头的CSDN主页 #x1f4dd;Gitee主页#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏#xff1a; 期待您的关注 题目描述#xff1a;
原题链接#xff1a;
求123...n_牛客题霸_牛客网 (nowcoder.com) 解题思路#xff1a;
… 博客主页倔强的石头的CSDN主页 Gitee主页倔强的石头的gitee主页 ⏩ 文章专栏 期待您的关注 题目描述
原题链接
求123...n_牛客题霸_牛客网 (nowcoder.com) 解题思路
这道题目要求计算从1到n的整数和但禁止使用一系列常见的编程构造和关键字如乘除法、循环语句for、while、条件判断语句if、else、switch、case以及三元运算符A?B:C。
也就是排除了数学方法、循环相加法、递归方法
这是一个有趣的挑战需要利用一些编程技巧来绕过这些限制。 利用构造函数和静态变量 定义一个类Sum其中包含两个静态成员变量count和ret。count用于记录已创建的Sum对象数量而ret用于累加这些对象的序号即每次创建Sum对象时其序号会被加到ret上。Sum类的构造函数每次被调用时都会将count加1并将count的当前值加到ret上。这样通过创建n个Sum对象ret就会累加从1到n的所有整数。使用动态内存分配 在Solution类中定义一个成员函数Sum_Solution该函数接受一个整数n作为参数。在Sum_Solution函数内部使用new操作符动态创建一个Sum类型的数组数组大小为n。这个操作会触发n次Sum的构造函数调用从而按照上述逻辑累加从1到n的整数到Sum::ret中。读取Sum::ret的值这个值就是1到n的整数和。使用delete[]操作符释放之前动态分配的内存。友元类 由于Sum类的静态成员变量ret是私有的需要一种方式来在Solution类中访问它。这里使用了友元类的概念将Solution类声明为Sum类的友元类这样Solution类就可以访问Sum类的私有成员了。主函数 在main函数中创建一个Solution对象s1并调用其Sum_Solution成员函数来计算1到10的和。输出结果。
通过这种方式代码巧妙地利用了类的构造函数和静态成员变量以及动态内存分配的特性来绕过不能使用循环和条件判断的限制实现了从1到n的整数求和。 C实现代码
class Sum
{
private:static int count;static int ret;
public:friend class Solution;//友元类Sum(){count;ret count;}
};
int Sum:: count 0;
int Sum::ret 0;
class Solution {
public:int Sum_Solution(int n) {new Sum[n];return Sum::ret;}
}; 测试结果