IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 什么是递归 -> 正文阅读

[移动开发]什么是递归

函数递归就是函数自己调自己;

例 1:递归函数

int fun (int i) {
	return fun (i);
}	

例1就是一个递归,不过它是一个无终止的递归。正常编写的程序应该是有限次数的,有终止条件的递归。可以用 if else 语句作限制。

例2 递归函数求n的阶乘

int main()
{
   int fun(int);
   cout<<fun(3) <<endl;
   return 0;
}
int fun (int n) {
    int a=0;
    if (n==1||n==0) {
        return 1;
    } else {
      a= fun(n-1)*n; 
    }
   return a;
}

递归之精髓 就在 a= fun(n-1)*n; 这一行。
程序执行流程 :

  1. main方法中调用fun函数,传入整数3.
  2. 执行 a= fun(n-1)*n语句中的fun(n-1)注意此时a没有赋值fun(n-1)也没有乘上n。只是单纯的再次调用fun方法
  3. 第二次调用fun,传入的值是n-1,即fun(2)
  4. 整数2再次进入 a= fun(n-1)*n的fun(n-1),此时a依然没有赋值,fun(n-1)也没有乘上n,只在调用fun方法,此时n为2;
  5. 经由两次递归后传入fun的值变成了1,此时执行 return 1语句,这个return 1 并不是表示整个方法结束了,返回1到main函数。而是将1返回至第四步尚未执行 乘n 操作的fun(n-1)方法。 这样第四步调用的fun(-1)就有了具体的返回值 1,执行时体现为 a= 1* 2;**注:(fun(n-1)=1,n=2)**执行完后a第一次有了具体的值 2.
  6. a 的值变成2后,此时程序 第一次执行 最后一行的 return a; 语句,这个return a 同样也不是表示整个方法结束了,返回a到main函数。而是将a的值返回至第第二步还在等待 乘n 的fun(n-1)方法。此时 a = 2*3(fun(n-1)=2,传入的n=3)。
  7. 第六步执行完后 a=6,此时会再执行return a;语句,将a的值返回至main函数里调用的fun(3).

fun函数一共被调用三次,一次是main函数里调用 fun(3),还有两次fun函数自己调用的即fun(2),fun(1); 最重要的是要理解我们调用fun函数并不是立即得到返回值,而是再等待程序递归至最低级,最低级有了确定的返回值,再层层递推上级。fun(3)里调用fun(2),fun(3)就陷入等待,fun(2)里调用fun(1),fun(2)陷入等待。直至fun(1)返回了1,fun(2)才会继续执行,fun(2)执行完后,fun(3)才能继续执行。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:54:07  更:2022-04-18 17:54:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 21:33:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码