无敌暴龙战士开E啦 2024-05-29 08:39 采纳率: 100%
浏览 8
已结题

return的值意义在哪,re到哪去了,用于干嘛的(语言-c语言)

img


我可以理解在一个比如int函数中return的值同为int类型的情况,也可以理解将return的值放进判断语句可以用0与非0来做真假判断,那像这个图里面的return 2我一直不能理解,这个2re到哪去了,用来干嘛的,在return 2之后紧跟的程序在做什么

  • 写回答

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)的返回值2fib(0)的返回值)。

    简而言之,return 2的目的是为了在特定条件下(当输入参数n等于1时)给出函数的明确结果,这个结果可以被进一步利用或直接作为最终答案。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 6月6日
  • 已采纳回答 5月29日
  • 创建了问题 5月29日

悬赏问题

  • ¥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来回复数据