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

c语言递归 累和 ,累乘积,斐波那契数列,字符串长度

目录

递归使用场景

1:使用递归的方式计算   Sn=1+2+3+..+100

2:计算 n!=n*(n-1)*(n-2)*......*1;

3:计算输出斐波那契数列前20项,并按每行4个数的格式输出(2019年)

4: 用递归和非递归两种方式编写函数strlength()。该函数与库函数strlen()功能相同。返回参数字符串的长度(整形),不允许调用任何库函数.(2015年)


递归使用场景

问题有规律可循:通向公式

具有递归的结束条件:明确的值

递归框架:if配合

结束条件成立,返回已知值(结束递归)

结束条件不成立,进行递归

 

1:使用递归的方式计算   Sn=1+2+3+..+100

 通向 公式    如果  n=1 返回1 

否则返回   n+f(n-1)

#include<stdio.h>
int add(int n)
{if (n== 1)  return 1;else return  n + add(n - 1);
}
void main()
{printf("%d", add(100));
}

2:计算 n!=n*(n-1)*(n-2)*......*1;

找通向公式      当n=0或者1 的时候为终止条件返回1     

否则  n*(n-1)!

#include<stdio.h>
int fac(int n)
{if (n == 1) return 1;else return n*fac(n-1);
}
void main()
{printf("%d", fac(3));
}

3:计算输出斐波那契数列前20项,并按每行4个数的格式输出(2019年)

 找通向公式      n=1 的时候返回1       n =2的时候返回1

否则就返回      前两项之和          f(n-1)+f(n-2)

#include<stdio.h>
int fib(int n)
{if (n == 1|| n==2) return 1;else return fib(n - 1) + fib(n - 2);
}void main()
{int i;for (i = 1; i <= 20; i++) {printf("%8d", fib(i));if (i % 4 == 0) printf("\n");	}

4: 用递归和非递归两种方式编写函数strlength()。该函数与库函数strlen()功能相同。返回参数字符串的长度(整形),不允许调用任何库函数.(2015年)

字符串长度不包括\0 

把字符串一点一点弄短  大事化小事

//不适用递归
int strlength(char *s)
{int n = 0;while (*s++) n++;return n;
}
#include<stdio.h>
//递归方式(大事化小)
int strlength(char *s)
{if (*s=='\0') return 0;else return 1 + strlength(s+1);//往后挪一个(这里是地址加1)
}
void main()
{char s[100];gets(s);printf("%d", strlength(s));
}

http://www.lryc.cn/news/2293.html

相关文章:

  • 数据与C(ASCII码,char)
  • 第一个C语言代码(visual studin创建调试以及项目文件功能讲解)
  • VIF原理
  • nginx相关反爬策略总结笔记
  • 【Vue3】电商网站吸顶功能
  • HOMER docker版本安装详细流程
  • 【数据结构】单向链表的练习题
  • 我的企业需要一个网站吗?答案是肯定的 10 个理由
  • CHI协议定义的NOC组件
  • Python+Flask+MySQL开发的在线外卖订餐系统(附源码)
  • OpenStack云平台搭建(4) | 部署Placement
  • GNN图神经网络原理解析
  • BI-SQL丨ALL、ANY、SOME
  • 从0到0.1学习 maven(三:声明周期、插件、聚合与继承)
  • 【直击招聘C++】2.5 this指针
  • spark数据清洗练习
  • Android 12首次开机启动Launcher前黑屏问题解析
  • 使用 LSSVM 的 Matlab 演示求解反常微分方程问题(Matlab代码实现)
  • 动态规划-背包问题
  • 计算24点与运算符重载
  • MES系统智能工厂,搭上中国制造2025顺风车
  • 【LeetCode】每日一题(1)
  • SpringCloud-Netflix学习笔记11——Hystrix实现服务降级
  • Oracle Dataguard(主库为 Oracle rac 集群)配置教程(03)—— 创建 dataguard 数据库之前的准备工作
  • 零代码做分析报表的bi软件才是好软件
  • linux ALSA 驱动架构
  • JDK 8 JVM内存结构详解
  • 黑马程序员 Linux 教程
  • 文件操作 -- IO
  • FPGA解析串口协议帧3.0版本,增加了错误重发功能,提供仿真文件以及源码