C语言递归函数如何实现
导读:本文共1922.5字符,通常情况下阅读需要6分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 一、递归的数学思想递归是一种数学上分而自治的思想递归需要有边界条件当边界条件不满足时,递归继续进行当边界条件满足时,递归停止递归将大型复杂问题转化为与原问题相同但规模较小的问题进行处理。二、递归函数函数体内部可以调用自己递归函数函数体中存在自我调用的函数递归函数是递归的数学思想在程序设计中的应用递归函数必须有递归出口函数的无限递归将导致程序栈溢出而崩溃三、递归函... ...
目录
(为您整理了一些要点),点击可以直达。一、递归的数学思想
递归是一种数学上分而自治的思想
递归需要有边界条件
当边界条件不满足时,递归继续进行
当边界条件满足时,递归停止
递归将大型复杂问题转化为与原问题相同但规模较小的问题进行处理。
二、递归函数
函数体内部可以调用自己
递归函数
函数体中存在自我调用的函数
递归函数是递归的数学思想在程序设计中的应用
递归函数必须有递归出口
函数的无限递归将导致程序栈溢出而崩溃
三、递归函数设计技巧
递归模型的一般表示法
四、递归函数设计示例一
用递归的方法编写函数求字符串长度
代码如下:
#include<stdio.h>intstrlen_r(constchar*s){if(*s){return1+strlen_r(s+1);}else{return0;}}intmain(){printf("%d\n",strlen_r("abc"));printf("%d\n",strlen_r(""));return0;}
输出结果如下:
五、递归函数设计示例二
斐波拉契数列递归解法
1,1,2,3,5,8,13,21,...
代码如下:
#include<stdio.h>intfac(intn){if(n==1){return1;}elseif(n==2){return1;}else{returnfac(n-1)+fac(n-2);}return-1;}intmain(){printf("%d\n",fac(1));printf("%d\n",fac(2));printf("%d\n",fac(9));return0;}
输出结果如下:
六、递归函数设计示例三
汉诺塔问题
将木块借助 B 柱由 A 柱移动到 C 柱
每次只能移动一个木块
只能出现小木块在大木块之上
汉诺塔问题分解
将 n-1 个木块借助 C 柱由 A 柱移动到 B 柱
将最底层的唯一木块直接移动到 C 柱
将 n-1 个木块借助 A 柱由 B 柱移动到 C 柱
代码如下:
#include<stdio.h>voidhan_move(intn,chara,charb,charc){if(n==1){printf("%c-->%c\n",a,c);}else{han_move(n-1,a,c,b);han_move(1,a,b,c);han_move(n-1,b,a,c);}}intmain(){han_move(3,'A','B','C');return0;}
输出结果如下:
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
C语言递归函数如何实现的详细内容,希望对您有所帮助,信息来源于网络。