一个简单的递归问题
2013-05-18 13:22
295 查看
见代码:
请问sum的值。
fun实质上是个递归函数,当Sample对象s的m_x值小于2,导致递归结束。
一般情况下,fun(s)的值是 s.m_x * fun(Sample(s.m_x -1 ) )的值
特殊情况下,fun(s)的值是 1,即s.m_x的值小于2时。
可以推导出一个递归的数学式子:
当x<2时,fun(x)=1;
当x>=2时,fun(x)=x*fun(x -1);即 fun(x)=x! ;
很容易推出fun(0)=1,fun(1)=1;fun(2)=2;fun(3)=6;
所以可得到sum的值10.
#include <iostream> using namespace std; class Sample { public: Sample(int x):m_x(x){} int get()const; private: int m_x; }; int Sample::get()const { return m_x; } int fun(Sample s) { if(s.get() <2) return 1; return s.get() * fun(Sample(s.get()-1)); } int main() { int sum=0; for(int i=0; i!=4; ++i) { sum+=fun(Sample(i)); } cout<<sum<<endl; return 0; }
请问sum的值。
fun实质上是个递归函数,当Sample对象s的m_x值小于2,导致递归结束。
一般情况下,fun(s)的值是 s.m_x * fun(Sample(s.m_x -1 ) )的值
特殊情况下,fun(s)的值是 1,即s.m_x的值小于2时。
可以推导出一个递归的数学式子:
当x<2时,fun(x)=1;
当x>=2时,fun(x)=x*fun(x -1);即 fun(x)=x! ;
很容易推出fun(0)=1,fun(1)=1;fun(2)=2;fun(3)=6;
所以可得到sum的值10.
相关文章推荐
- 一个简单的递归求目录的程序遇到的问题
- 一天一个算法题-简单的-递归-猴子吃桃问题
- 我也提一个关于递归的问题,代码简单,不绕,希望一起讨论一下~
- 【素养】由一个简单算法想到的程序员素养问题
- 关于一个asp的简单聊天室的代码问题
- 一个从QWidget派生的简单类通过setStyleSheet设置背景无效的问题
- 由一个简单算法想到的程序员素养问题
- HashMap与Hashtable的区别是面试中经常遇到的一个问题。这个问题看似简单,但如果深究进去,也能了解到不少知识。本文对两者从来源、特性、算法等多个方面进行对比总结。力争多角度、全方位的展示二者的不同,做到此问题的终结版。
- 一个简单的路径查找问题
- 简单说明什么是递归,什么情况下会使用递归,并写一个简单的递归程序。
- 迷宫问题用递归求全部解和用栈求一个解(C++)
- 递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
- 项目中一个简单SQL查询问题,已经解决了,留个纪念,非常感谢帮我的朋友们。
- 一个简单的优化例子(锁问题)
- 一个递归问题
- 一个简单的递归小程序
- 百度笔试题---一个简单的递归实现
- 一个简单的递归实例
- 一个简单的跨库事务问题
- OpenJudge 简单的整数划分问题(递归)