题目:要求不能使用乘除,,for,while,if,else switch,case等以及条件判断语句。
这题太开放了,直接看的书上的答案。
#include "stdafx.h"
#include <iostream>
using namespace std;
typedef unsigned int(*fun)(unsigned int);
unsigned int s1(unsigned int n)
{
return 0;
}
unsigned int s2(unsigned int n)
{
static fun f[2] = { s1, s2 };
return n + f[!!n](n - 1);
}
int _tmain(int argc, _TCHAR* argv[])
{
cout << s2(100) << endl;
return 0;
}
说明下,如果n不是0,比如说100,那么!n就是false,!!n就是true,并不是其它某个数。
本文介绍了一种不使用常规控制流语句(如if、for、while等)来实现递归求和的方法。通过使用两个静态函数指针进行相互调用来间接实现递归,最终计算出给定数值的累加总和。

被折叠的 条评论
为什么被折叠?



