我可以理解在一个比如int函数中return的值同为int类型的情况,也可以理解将return的值放进判断语句可以用0与非0来做真假判断,那像这个图里面的return 2我一直不能理解,这个2re到哪去了,用来干嘛的,在return 2之后紧跟的程序在做什么
return的值意义在哪,re到哪去了,用于干嘛的(语言-c语言)
我可以理解在一个比如int函数中return的值同为int类型的情况,也可以理解将return的值放进判断语句可以用0与非0来做真假判断,那像这个图里面的return 2我一直不能理解,这个2re到哪去了,用来干嘛的,在return 2之后紧跟的程序在做什么
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
8条回答 默认 最新
- 专家-皆知 2024-05-29 08:42关注
参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。
在C语言中,
return
语句的作用是结束当前函数的执行,并可选地返回一个值给调用者。这个返回的值可以被用来进行进一步的计算、赋值或者其他用途,具体取决于它如何被调用者所使用。针对你的代码示例,这里有一个简化的版本,修正了其中的一些错误(比如将单引号改为双引号定义字符串,以及将赋值操作符
=
更正为比较操作符==
,并修复了递归调用的语法错误):#include <stdio.h> int cnt = 0; // 修正后的斐波那契数列函数 int fib(int n) { cnt++; if (n == 0) return 1; // 当n为0时,返回1 else if (n == 1) return 2; // 当n为1时,返回2 else return fib(n - 1) + fib(n - 2); // 否则递归计算 } // 主函数 int main() { fib(8); // 调用fib函数计算第8个斐波那契数 printf("%d", cnt); // 打印递归调用的次数 return 0; // 结束main函数,返回0表示程序正常结束 }
关于你的疑问“return 2之后紧跟的程序在做什么”,实际上在
return 2
执行后,如果是直接从这个点返回(即在n == 1
的条件满足时),那么当前的fib
函数调用就会结束,不会执行后面的任何代码。返回的值(在这个例子中是2
)会传递给调用它的上下文。例如,如果这个fib(1)
是作为另一个表达式的一部分(如fib(n - 1) + fib(n - 2)
中的一个部分),那么这个2
就会作为那个表达式计算的一部分使用。在递归调用的情境下,
return 2
可能作为递归终止条件之一的结果被上一层递归调用接收到,然后与另一个递归调用的结果相加(比如在计算fib(2)
时,会用到fib(1)
的返回值2
和fib(0)
的返回值)。简而言之,
return 2
的目的是为了在特定条件下(当输入参数n
等于1时)给出函数的明确结果,这个结果可以被进一步利用或直接作为最终答案。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
- ¥15 怎么看我在bios每次修改的日志
- ¥15 python+mysql图书管理系统
- ¥15 Questasim Error: (vcom-13)
- ¥15 船舶旋回实验matlab
- ¥30 SQL 数组,游标,递归覆盖原值
- ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
- ¥20 gitlab 中文路径,无法下载
- ¥15 用动态规划算法均分纸牌
- ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据