zoukankan      html  css  js  c++  java
  • 6、递归

    递归就是自己调用自己

    例:计算阶乘

    5!=5x4x3x2x1;

    n!=n x (n-1)!;

    5!=5 x 4!  ,算不出来先暂存

    4!=4 x 3!  ,算不出来先暂存

    3!=3 x 2!  ,算不出来先暂存

    2!=2x 1!  ,算不出来先暂存

    1!=1x 0!  ,算不出来先暂存

    0!=1;算出来了往回推

    1!=1 x 1=1;算出来了往回推

    2!=2x 1!=2;算出来了往回推

    3!=3 x 2!=6;算出来了往回推

    4!=4 x 3!=24;算出来了往回推

    5!=5 x 4!=5 x 24 =120;算出来了

    任何能使用递归解决的问题都可以使用迭代实现

    递归更好理解,但大量的递归调用会占用大量的内存空间和时间,

      1 #include<iostream>
      2 
      3 using namespace std;
      4 
      5 long jx(int n)
      6 {
      7 	if(n==0)
      8 		return 1;
      9 	else
     10 		return n*jx(n-1);
     11 }
     12 long jx2(int n)
     13 {
     14 	long result =1;
     15 	for(int i=n;i>0;i--)
     16 	{
     17 		result=result*i;
     18 	}
     19 	return result;
     20 }
     21 
     22 int main()
     23 {
     24 	for(int num=0;num<10;num++)
     25 	{
     26 		cout<<"递归:"<<num<<"!="<<jx(num)<<endl;
     27 		cout<<"迭代:"<<num<<"!="<<jx2(num)<<endl;
     28 
     29 	}
     30 
     31 	system("pause");
     32 	return 0;
     33 }
     34 
     35 

    VS2010运行结果:

    image

  • 相关阅读:
    4.代理模式
    替换文中指定字段实例
    常用正则表达式
    1.简单工厂模式
    ftp 发生意外错误 0x8ffe2740
    《人月神话》1
    3.装饰模式
    简易JS版多级菜单
    UEditor 百度富文本编辑器
    奉献一个窗口置顶的小工具
  • 原文地址:https://www.cnblogs.com/luanxin/p/8875295.html
Copyright © 2011-2022 走看看