当前位置: 首页 > news >正文

临沂网站制作计划南京今天的最新消息

临沂网站制作计划,南京今天的最新消息,html教程 it教程网,音乐类网站开发这里写目录标题 一、递归定义二、递归思想三、递归的限制条件及注意事项四、递归的例子五、跳台阶问题 一、递归定义 定义:递归是一种解决问题的一种方法(函数的应用),即函数自己调用自己。 补充知识: 迭代&#xff1…

这里写目录标题

    • 一、递归定义
    • 二、递归思想
    • 三、递归的限制条件及注意事项
    • 四、递归的例子
    • 五、跳台阶问题

一、递归定义

定义:递归是一种解决问题的一种方法(函数的应用),即函数自己调用自己。
补充知识:
迭代:通常是使用循环结构。

二、递归思想

把一个复杂问题层层转化为一个个与原问题相同的小问题。递即递推,归即回归。

三、递归的限制条件及注意事项

限制条件:

  1. 存在限制条件,即满足一定的条件就不再递归了。
  2. 每递归一次,就逐步接近限制条件。

注意事项:
1.有重复运算的情况下,不要使用递归,而是使用迭代。
2.递归的深度不能太深。

四、递归的例子

1. 输入一个整数,然后按顺序打印

#include <stdio.h>
void Print(int num)
{if (num < 9){printf("%d ", num);}else{Print(num / 10);printf("%d ", num % 10);}
}
int main()
{int input = 0;//输入整数while (scanf("%d", &input) != EOF){Print(input);printf("\n");}return 0;
}

2.实现n的阶乘(使用递归)

#include <stdio.h>
int Fact(int n)
{if (0 == n){return 1;}else{return n * Fact(n - 1);}}
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int ret = Fact(n);printf("%d\n", ret);}return 0;
}

使用for语句实现n的阶乘(使用迭代)

int main()
{int n = 0;while (scanf("%d", &n) != EOF){int ret = 1;if (0 == n){printf("%d", ret);}else{for (int i = 1; i <= n; i++){ret *= i;}printf("%d\n", ret);}}return 0;
}

五、跳台阶问题

(1)爬楼梯,小明一次可以爬一个,两个或三个台阶。计算小明爬上楼梯的方法。
使用递归方法:

int climpstairs(int n)
{if (n <= 2){return n;}else if (3 == n){return 4;}//4+2+1elsereturn climpstairs(n - 1) + climpstairs(n - 2) + climpstairs(n - 3);
}
int main()
{int n = 0;printf("请输入台阶数:");scanf("%d", &n);int ret =climpstairs(n);printf("小明爬上台阶n的方法有%d种\n", ret);return 0;
}

使用非递归方法:

int climpstairs(int n)
{if (n <= 2){return n;}int arr[100];arr[1] = 1;arr[2] = 2;arr[3] = 4;for (int i = 4; i <=n; i++){arr[i] = arr[i - 1] + arr[i - 2] + arr[i - 3];}return arr[n];
}int main()
{int n = 0;printf("请输入台阶数:");scanf("%d", &n);int ret =climpstairs(n);printf("小明爬上台阶n的方法有%d种\n", ret);return 0;
}

(2)小明一次可以爬一个,两个,三个或四个台阶。计算他爬台阶n有多少种方法。

int climpstairs(int n)
{if (n <= 2){return n;}else if (3 == n){return 4;}else if (4 == n){//4+2+1+1return 8;}//n=5  8+4+2+1elsereturn climpstairs(n - 1) + climpstairs(n - 2) + climpstairs(n - 3)+climpstairs(n-4);
}
int main()
{int n = 0;printf("请输入台阶数:");scanf("%d", &n);int ret = climpstairs(n);printf("小明爬上台阶n的方法有%d种\n", ret);return 0;
}

使用非递归方法。

int climpstairs(int n)
{if (n <= 2){return n;}int arr[100] = { 0 };arr[1] = 1;//1arr[2] = 2;//2arr[3] = 4;//2+1+1arr[4] = 8;//4+2+1+1for (int i = 5; i <= n; i++){arr[i] = arr[i - 1] + arr[i - 2] + arr[i - 3] + arr[i - 4];}return arr[n];
}
int main()
{int n = 0;printf("请输入小明要爬的台阶数:", n);scanf("%d", &n);int ret = climpstairs(n);printf("小明爬上台阶n的方法有%d种\n", ret);return 0;
}
http://www.yayakq.cn/news/248863/

相关文章:

  • 网页编辑与网站编辑html静态网站作品
  • 时尚网站策划哪学网页设计好
  • 做网站后台数据库建设淘宝客 网站建设
  • 瑞安网站建设公司网站制作知名公司
  • 织梦网站栏目设计优秀排版设计图片
  • 迪庆网站建设智能网站系统可以做app吗
  • python做后台开发移动网站百度浏览器网站入口
  • 网站分页设计网站建设公司合肥
  • 做黑网站赚钱产品推广建议
  • 网站建设公司加优化网站介绍怎么写
  • 网站建设与维护公司自适应网站模板
  • 如何做淘宝商城网站设计廊坊百度快照优化哪家服务好
  • 网站开发终止合作协议厦门住房建设局网站首页
  • 网站开发未来重庆的网站设计公司
  • 黑龙江开放网站备案企业为什么做网站系统
  • 网站前置审批企业查询平台有哪些
  • 网站开发需要的资料wordpress 直播 视频
  • 别人的网站是怎么做的快速搭建网站页面
  • 做玩具什么 网站比较好美食网站建设项目预算
  • 网站做APP麻烦吗建站公司 源码申请
  • 租用服务器一般是谁帮助维护网站安全北京做网站公司电话
  • 如何优化网站结构网络服务器搭建配置与管理 下载
  • 百度网盟推广太恶心网站关键词怎样做优化
  • 蒲城做网站二手房网站怎么做才能接到电话
  • 门户网站的特点点播视频网站怎么建设
  • 做电子烟外贸网站有哪些建工网校一级建造师
  • 做网站有用nodejs广告网站设计方案
  • wordpress站点取名网站建设最便宜多少钱
  • 中国城市建设官方网站旅游网站建设维护
  • 智慧团建网站登陆网站留言短信通知 源码