递归调用的次数统计

题目描述

如下程序的功能是计算 Fibonacci数列的第n项。函数fib()是一个递归函数。请你改写该程序,计算第n项的同时,统计调用了多少次函数fib(包括main()对fib()的调用)。

#include<stdio.h>
int fib(int k);

int main(void )
{
    int n;
    scanf("%d", &n);
    printf("%d\n", fib(n));  
    return 0;
}

int fib(int k)
{
    if(k == 1 || k == 2)
        return 1;
    else
        return fib(k-1) + fib(k-2);
}

输入

输入一个正整数n。

输出

输入包含两行,第一行是一个整数,表示第n项的值;第二行输入递归调用了多少次,具体格式见输出样例。

样例输入

20

样例输出

6765
递归调用了13529次

#include<stdio.h>
int a=0;
 int fib(int k)
 {
     a++;
     if(k == 1 || k == 2)
             return 1;
     else
         return fib(k-1) + fib(k-2);
    return a;
 }
int main(void )
 {
     int n;
     scanf("%d", &n);
     printf("%d\n", fib(n));
     printf("递归调用了%d次",a);
     return 0;
 }
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
知识覆盖  基本程序设计技术,递归程序设计,程序结构,文件,结构体,类型定义 实验内容 1.分别调试课件中的给定n求Fibonacci(n)递归与非递归函数,并编写测试函数对两种或多种不同方法所需时间进行比较,且当某一轮计算所需时间超过给定最大时间量时(如超过10秒),停止计算。计算过程中要求输出类似如下格式的运行时间比较表(请用实际运行时间代替***): n 非递归法耗时(ms) 递归法耗时(ms) 1 *** *** 2 *** *** … x *** *** 提示:计时方法请参见参考书或课件。 2.统计给定的一组文本文件的英文单词、字符、数字字符、空白字符、英文字母和其他字符的个数请你扮演项目组程序员角色,认真阅读CodeForLab6.cpp和CodeForLab6.h中的开发要求,按照项目经理要求,完成规划好的各个函数。 1)请参看文档:实验6结构说明.pptx,理解CodeForLab6.h中的两个结构体类型。并请在实验报告中说明typedef的作用。 2)阅读函数AllocateSpaceForTextFilesInfo,查阅资料并在实验报告中说明函数malloc的具体功能。 3)阅读函数CountWordsOfEuropeanTxtFile,画出该函数流程图,查阅资料并在实验报告中说明其中的函数fopen或fclose的具体功能。 4)阅读CodeForLab6.cpp的各个函数的功能说明,补全代码实现如下各个函数的功能: PrepareBasicInfoOfFiles CountWordsInOneLine CountFilesInfo CountDifferentCharactersInFile, TestCountFilesInfo 5)调用TestCountFilesInfo验证各功能正确性 6)阅读函数ExportFilesInfoToWebPage,查阅资料并在实验报告中说明函数fprintf的功能。 7)(自选题)查阅资料自学一些网页格式,尝试修改ExportFilesInfoToWebPage,以使输出内容更为丰富多彩或个性,如点击文件名能打开实验数据文件,再如加入一些其他链接,如程序员的个人主页等。 注意: 1)请将CodeForLab6.cpp和CodeForLab6.h文件添加到你的工程中; 2)测试数据至少应包括DataForLab6.rar中的4个文本文件,建议再自编一些测试文件。 特别注意:请一定看清要求,做好准备,通过整理函数调用关系表理清程序框架,通过分析编写流程图理清每个函数的实现思路。 3. (自选题)编写程序,统计英文文件中的每个单词的出现次数(词频)。
【问题描述】 【问题描述】编写函数f,功能是用递归方法求斐波那契数列的第n项,函数原型为 int f(int n),在主函数中输入一个正整数n,调用函数f求出斐波那契数列的第n项,并在主函数中输出。 斐波那契数列:1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8 【问题描述】编写函数f,功能是用递归方法求斐波那契数列的第n项,函数原型为 int f(int n),在主函数中输入一个正整数n,调用函数f求出斐波那契数列的第n项,并在主函数中输出。 斐波那契数列:1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8 【问题描述】编写函数f,功能是用递归方法求斐波那契数列的第n项,函数原型为 int f(int n),在主函数中输入一个正整数n,调用函数f求出斐波那契数列的第n项,并在主函数中输出。 斐波那契数列:1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8 【问题描述】编写函数f,功能是用递归方法求斐波那契数列的第n项,函数原型为 int f(int n),在主函数中输入一个正整数n,调用函数f求出斐波那契数列的第n项,并在主函数中输出。 斐波那契数列:1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8 斐波那契数列:1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值