C语言之递归函数

今天来总结一下关于递归函数的使用方面的问题。

递归函数就是在函数使用的时候自己调用自己,层层调用,来实现你想要的功能。

有两个最常用的例子,我们来写一下。

(1)计算阶乘

#include <stdio.h>

int factorial(int n); // 函数声明(阶乘)

int main(void)

{

int a = 5;

printf("%d的阶乘是:%d.\n", a, factorial(a));

return 0;

}

int factorial(int n)

{

if (n < 1)

{

printf("error.\n");

return -1;

}

if (n == 1)

{

return 1;

}

else

{

return (n * factorial(n-1));

}

}

(2)斐波那契函数

#include <stdio.h>

int fibonacci(int n); // 函数声明(斐波那契函数)

int fibonacci(int n)

{

if (n == 0) return    0;

if (n == 1) return    1;

return  fibonacci(n - 1) + fibonacci(n - 2);

}

int main(void)

{

int a;

printf("%d的斐波那契函数值为%d",a,fibonacci(a));

return   0;

}

第二个可能不太容易看明白,我们来分析一下

首先,这个假设一个数为n ,

第一次递归,f(n)=f(n-1)+f(n-2)

第二次递归分为两个部分,

f(n-1)=f(n-2)+f(n-3) f(n-2)=f(n-3)+f(n-4)

第三次递归分为四个部分……一直递归到0和1为止。

所以n==0或者n==1的时候返回一个常数很重要,要不然就会一直递归下去,直到触发段错误。

时间: 2024-10-11 05:22:11

C语言之递归函数的相关文章

Go语言之递归函数

Go 语言递归函数 递归,就是在运行的过程中调用自己. Go 语言支持递归.但我们在使用递归时,开发者需要设置退出条件,否则递归将陷入无限循环中. 递归函数对于解决数学上的问题是非常有用的,就像计算阶乘,生成斐波那契数列等. package main import "fmt" func factorial(n uint64) uint64 { if n > 1 { return n * factorial(n-1) } return 1 } func main() { a :=

c语言中递归函数真的好吗?

递归函数就是直接或者间接的调用自己本身的函数. 接触递归的时候我们经常会看到这个程序 #include<stdio.h> #include<stdlib.h> long factorial(int n) {  if (n <= 0)   return 1;  else   return n*factorial(n - 1); } int main() {  int n = 5;  printf("%ld\n", factorial(n));  system

【C语言】递归函数DigitSum(n)

//写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和, //例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19 #include <stdio.h> int fuc(int x) { if(x!=0) return x%10+(fuc(x/10)); return 0; } int main() { printf("%d\n",fuc(2138)); return 0; }

C语言:递归函数的使用

有这样一个题目:每瓶汽水1元,两个空瓶可以置换一瓶汽水,现在有20元,最多能喝多少瓶汽水. 分析题目可以得出,开始时有20个汽水瓶,这20个瓶子可以经过置换得到若干瓶汽水...因此,使用递归算法实现会很方便得出最多喝的汽水瓶数. 空瓶置换中,每使用两个瓶子可以换一瓶汽水,因此每次兑换后,瓶子数量减1. 基于这样的分析,可以用如下代码实现: #include<stdio.h> #include<assert.h> int exchange(int count){ count = co

Go 语言递归函数

Go 语言递归函数 递归,就是在运行的过程中调用自己. 语法格式如下: 1 func recursion() { 2 recursion() /* 函数调用自身 */ 3 } 4 5 func main() { 6 recursion() 7 } Go 语言支持递归.但我们在使用递归时,开发者需要设置退出条件,否则递归将陷入无限循环中. 递归函数对于解决数学上的问题是非常有用的,就像计算阶乘,生成斐波那契数列等. -----------------------------------------

GO语言学习(二十)Go 语言递归函数

Go 语言递归函数 递归,就是在运行的过程中调用自己. 语法格式如下: func recursion() { recursion() /* 函数调用自身 */ } func main() { recursion() } Go 语言支持递归.但我们在使用递归时,开发者需要设置退出条件,否则递归将陷入无限循环中. 递归函数对于解决数学上的问题是非常有用的,就像计算阶乘,生成斐波那契数列等. 阶乘 以下实例通过 Go 语言的递归函数实例阶乘: package main import "fmt"

Go by Example: Recursion

Go语言支持递归函数.这里是一个经典例子:factorial 数列. package main import "fmt" // fact函数不断地调用自身,直到达到基本状态fact(0) func fact(n int) int { if n == 0 { return 1 } return n * fact(n-1) } func main() { fmt.Println(fact(7)) } 输出 <span style="font-size:18px;"

倒序--逆序=3 rwkj 1271

--> C语言:递归函数3(数组倒序) 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte总提交:786            测试通过:347 描述 输入多个整数,以0结束,将这些整数逆序后输出. 要求:使用递归函数将数组倒序,在main中调用递归函数. 输入 多个整数,最后为0. 输出 逆序后的这些整数. 样例输入 1 2 5 4 01 2 3 4 5 6 7 8 9 0 样例输出 4 5 2 19 8 7 6 5 4 3 2 1 提

图灵机

图灵机(英语:Turing machine),又称确定型图灵机,是英国数学家艾伦·图灵于1936年提出的一种抽象计算模型,其更抽象的意义为一种数学逻辑机,可以看作等价于任何有限逻辑数学过程的终极强大逻辑机器. 目录 [隐藏] 1图灵的基本思想 2图灵机的正式定义 3图灵机的基本术语 4图灵机的例子 5通用图灵机 6图灵机的变体 7图灵可计算性 8其它等价的计算模型 9参考文献 10外部链接 图灵的基本思想 图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看作下列两种简单的