首页 > 其他分享 >10月23日:学习日记(函数递归)

10月23日:学习日记(函数递归)

时间:2022-10-23 23:00:15浏览次数:38  
标签:10 return 递归 23 int strlen num my

什么是递归?

程序调用自身的编程技巧称为递归( recursion)。 递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接

调用自身的 一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,

递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。

递归的主要思考方式在于:把大事化小

递归的两个必要条件

存在限制条件,当满足这个限制条件的时候,递归便不再继续。

每次递归调用之后越来越接近这个限制条件

练习1:(画图讲解)

接受一个整型值(无符号),按照顺序打印它的每一位。

例如: 输入:1234,输出 1 2 3 4

#include <stdio.h>
void print(int num)
{
if (num > 9)//设置条件,停止递归
{
print(num / 10);//自身调用
}
printf("%d ", num % 10);
}
int main()
{
unsigned int num = 0;
scanf("%d", &num);//1234
//递归
print(num);
return 0;
}

练习2:(画图讲解)

编写函数不允许创建临时变量,求字符串的长度。

#include <stdio.h>
int my_strlen(char* str)//按递归的方式
{
//my_strlen("bit")
//1+my_strlen("it")
//1+1+my_strlen("t")
//1+1+1+my_strlen("")
if (*str != '\0')
return 1 + my_strlen(str + 1);
else
return 0;
}

int main()
{
char arr[] = "bit";//模拟实现strlen函数的作用
int len = my_strlen(arr);//数组传参传过去的不是整个数组,而是首元素的地址
printf("%d\n", len);
return 0;
}

标签:10,return,递归,23,int,strlen,num,my
From: https://blog.51cto.com/u_15831605/5787682

相关文章

  • 2022年10月23日22:34:56
    最近事情很多社团招新制作一本书新成员培训兼职不定时的兼职工作勤工俭学有时间就要去总结大一已经浪费了很多时间了,没想到现在还有那么多无关紧要的事情要做,很......
  • disc性格测试结果分析(disc性格测试结果分析23个D16个C)
    DISC的性格测评~~结果是S(15)I(15)C(8)D(2),求分析啊~~~~~~~~~~~计算你的各项得分,超过10分称为显性因子,可以作为性格测评的判断依据。低于10分称为隐性因子,对性格测......
  • 10.23回顾
    本周内容回顾异常捕获生成器相关内容概述模块简介常用内置模块本周测评作业解析异常捕获1.异常捕获的语法异常捕获一般是使用Trytry:待检测的子代码excep......
  • 0——100不能被三整除
    #include<stdio.h>intmain(){inti;for(i=0;i<=100;i++){if(i%3!=0){printf("%d\n",i);}}return0;}......
  • 0——10000爱因斯坦
    #include<stdio.h>intmain(){inta;for(a=0;a<10000;a++){if(a%2==1&&a%3==2&&a%5==4&&a%6==5&&a%7==0&&a<1000){printf("%d\n",a);}}return0;}......
  • Linux Debian10更新源
    新安装的Debian系统,经常出现安装不了软件的情况,因为默认的源是国外,所以导致无法安装,我们可以通过修改源的方式进行处理。1.编辑/etc/apt/sources.list文件以修改更新源vim......
  • [2022.10.23]String的不可变性
    final关键字代表最终、不可改变的常见四种用法:1.可以用来修饰一个类(不能有任何子类)2.可以用来修饰一个方法(最终方法,不能被覆盖重写)3.还可以用来修饰一个局部变量(对......
  • 2022.10.23每日一题
    任务分配题目描述你有\(n\)个任务,其中第\(i\)个任务,在\(s_i\)开始,\(e_i\)时刻结束,如果做这个任务,你能获得\(w_i\)的收益。但是你在一个时刻只能做一个任务,问选......
  • 2022-10-23学习内容
    1.提醒对话框AlertDialog1.1activity_alert_dialog.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/an......
  • dairy-20221023
    preface今天准备开始进行有计划的代码训练,今天开始的是50projects50days计划,这个时间段肯定是不能每天做这个的,有时间就弄一弄吧。<!DOCTYPEhtml><htmllang="en"><h......