首页 > 其他分享 >B站C语言第11课——函数和递归

B站C语言第11课——函数和递归

时间:2023-11-05 22:31:52浏览次数:29  
标签:11 return 递归 int ret C语言 printf main

1.工具cpulspuls.com    程序员知乎:stack overflow.com23

2.递归——程序调用自身的编程技巧称为递归

史上最简单的递归

int main()

{

printf("hehe\n");

main();

return 0;


}

递归常见的错误:栈溢出——

例子1:

#include <stdio.h> void printf(int n) { if(n>9) { print(n/10); } printf("%d ",n%10);

} int main() { unsigned int num = 0; scanf("%d",&num);//1234 //递归 print(num);

return 0;

}

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

int my_strlen(char* str)

{

if(*str != '\0')

return 1+my_strlen(str+1);

else

return 0;

}

int  main()

{

char arr[] = "arr";

int len = my_strlen(arr);

printf("%d\n",len);

return 0;

}

例子3:求n的阶乘

方法1-----递归方法

int Fac2(int n)

{

if(n<=1)

 return 1;

else

 return n*Fac2(n-1);

}

int main()

{

//求n的阶乘

int n = 0;

int ret = 0;

scanf("%d", &n);

ret = Fac2(n);//循环的方式

printf("%d\n", ret);



return 0;


}

方法2----非递归法

int Fac1(int n)

{

int i = 0;

int ret = 1;

for(i=1; i<=n; i++)

{

 ret *=i;  

}

return ret;

}

int main()

{

//求n的阶乘

int n = 0;

int ret = 0;

scanf("%d", &n);

ret = Fac1(n);//循环的方式

printf("%d\n", ret);



return 0;


}

例子4:求斐波那契数列 1 1 2 3 5 8 13 21 34 55.........(前两个数的和等于第三个数)

/*int Fib(int n)

{

int a = 1;

int b = 1;

int c = 1;


while(n>2)

{

 c = a+b;

 a=b;

 b=c;

 n--;

}

return c;


}

int main()

{

int n = 0;

int ret = 0;

scanf("%d",&n);

ret = Fib(n);

//TDD - 测试驱动开发

printf("ret = %d\n", ret);

//printf("count = %d\n", count);

return 0;

}*/

汉诺塔问题

A小移到C,A中移B,C小移动到B,A大移动到C,B小移动到A,B中移动到C,A小移动到C

青蛙跳台阶问题

共n个台阶1次跳一个台阶或两个台阶

这只青蛙要跳到第N个台阶,有多少种跳法

《剑指offer》



标签:11,return,递归,int,ret,C语言,printf,main
From: https://blog.51cto.com/u_16316543/8196433

相关文章

  • 2023/11/5
    HDFS分布式文件系统传统的网络文件系统(NFS)文件存储在单机上,无法提供可靠性暴躁。很多客户端同时访问NFSServer时,容易造成服务器压力。对文件修改时,得先同步到本地。在未同步到服务端之前,其他客户端是不可见的。HDFS设计原则设计目标存储非常大的文件:指的是几百......
  • fibnacci数列递归实现
    目录1.fibnacci数列2.fibnacci数列的递归表达式3.C语言4.用GDB查看递归的堆栈情况1.fibnacci数列2.fibnacci数列的递归表达式F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)3.C语言由于递归算法的特性,当计算较大的Fibonacci数列,如Fib(100)、Fib(1000)和尤其是Fib(1000......
  • 实验3_C语言函数应用编程
    task1.c#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);//函数声明voidprint_spaces(intn);//函数声明voidprint_blank_lines(intn);//函数声......
  • C语言循环语句---其一
    一、while语句通常,我们可以用while语句实现一种循环,本质上就是满足条件后跳出循环,不满足条件则执行大括号中的语句。它的通常结构是这样的while(conditiom){code}比如,把1-100之间的偶数全部打印出来,就可以用这个代码intn=1while(n<=100){if(n%2==0)printf("%d",n);n++;}通常,还会......
  • C++U2-第11课-单元复习(二)
    上节课作业部分(点击跳转) 单元复习(二)[【字符串】作者名]【思路分析】1、定义字符串s2、使用cin>>s,输入字符串3、输出字符串的第一个字符s[0],因为第一个作者名前面没有-4、遍历字符串,遇到-的位置,输出此位置的下一个位置【参考代码】#include<iostream>#in......
  • 110115
    一场比赛中共有 n 支队伍,按从 0 到  n-1 编号。给你一个下标从 0 开始、大小为 n*n 的二维布尔矩阵 grid 。对于满足 0<=i,j<=n-1 且 i!=j 的所有 i,j :如果 grid[i][j]==1,那么 i 队比 j 队 强 ;否则,j 队比 i 队 强 。在这场比赛......
  • fibnacci数列递归实现
    一、网上查询资料说明什么是fibnacci数列斐波那契数列(Fibonaccisequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(LeonardoFibonacci)以兔子繁殖为例子而引入,故又称“兔子数列”。斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89...这个数列从第3项开始,每一项都等于前两项之......
  • 实验3 C语言函数应用编程
    实验任务1源代码:1#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#include<windows.h>5#defineN8067voidprint_text(intline,intcol,chartext[]);//函数声明8voidprint_spaces(intn);//函数声明9voidprint_blan......
  • 11、SpringMVC之文件下载和上传
    创建名为spring_mvc_file的新module,过程参考9.1节和9.5节11.1、文件下载11.1.1、创建图片目录并放置图片11.1.2、页面请求示例<ath:href="@{/test/down}">下载图片</a>11.1.3、控制器方法示例packageonline.liaojy.controller;importorg.springframework.http.Ht......
  • 2023.11
    换种方式来写。XXIIOpenCup,Korea:A.AutomaticSprayer2这个构造场上过的不少,但是真实难度并不低。考虑如果我们能解出每一行,每一列的和\(r/c\)。那么根据一定有解这个事实,我们一定能构造出一个合法的矩阵,考虑以下的网络流模型:建立二分图,左行右列。然后\(s\)连向所有行......