计算机科学-第15周 递归函数 题目及参考解答

简介: 《计算机科学》课程主页在:http://blog.csdn.net/sxhelijian/article/details/137055971、阅读下面关于递归函数的程序,在草稿纸上画出函数调用“递推-回归”的过程,得出运行结果,并和实际运行结果进行对照(1)#include <stdio.h>int fact(int n);int main(){ long x=0

《计算机科学》课程主页在:http://blog.csdn.net/sxhelijian/article/details/13705597


1、阅读下面关于递归函数的程序,在草稿纸上画出函数调用“递推-回归”的过程,得出运行结果,并和实际运行结果进行对照
(1)

#include <stdio.h>
int fact(int n);
int main(){
    long x=0,y=0;
    x=5;
    y=fact(x);
    printf("%ld\n",y);
    return 0;
}
int fact(int n){
    long f=0;
    if(n==1)
        f=1;
    else
        f=n*fact(n-1);
    return f;
}
通过绘出“递推-回归”图,你认为运行结果为:____________________
实际运行的结果为:_________________

(2)

#include <stdio.h>
void f(int n)
{
    if(n>=10)
        f(n/10);
    printf("%d\n",n);
}
int main()
{
    f(12345);
    return 0;
}
通过绘出“递推-回归”图,你认为运行结果为:____________________
实际运行的结果为:_________________


2、阅读下面关于递归函数的程序,写下你认为的运行结果,并和实际运行结果进行对照,然后通过“单步执行”,观察这些递归函数的执行过程。
(1)
#include <stdio.h>
void recur(char c)
{
    printf("%c\n",c);
    if(c<'5') recur(c+1);
    printf("%c\n",c);
}
int main()
{
    recur('0');
    return 0;
}
你认为运行结果为:__________________
实际运行的结果为:_________________
请用“单步执行”跟踪。

(2)

#include <stdio.h>
void f(int n);
int main ()
{
    int  i=1234;
    f(i);
    return 0;
}


void f(int n)
{
    if(n==0)
        return;
    else
    {
        printf("%d\n",n%10);
        f(n/10);
        printf("%d\n",n%10);
        return;
    }
}
你认为运行结果为:__________________
实际运行的结果为:_________________
请用“单步执行”跟踪。


3、楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,编一程序计算共有多少种不同的走法?通过自定义的递归函数求解这个问题。
  提示:设n阶台阶的走法数为f(n)。
  • n=1时,一步上去,有1种走法;
  • n=2时,可以一步1阶,分两步上去,也可以一步2阶,用一步上去,共有2种走法;
  • n个台阶时,看最后一步怎么走。最后一步走1阶,走法为f(n-1)种,而最后一步走2阶,趟法为f(n-2)种,所以,总的走法种数是f(n-1)+f(n-2)
  所以,编程序解下面的方程,即是本题解法:

   
  参考解答:

#include <stdio.h>
int f(int n);
int main(){
    int x,y;
    x=5;
    y=f(x);
    printf("%d\n",y);
    return 0;
}
int f(int n){
    int m;
    if(n==1)
        m=1;
    else if(n==2)
        m=2;
else
    m=f(n-1)+f(n-2);
    return m;
}


4、编写程序,计算ackerman函数值并运行程序求出A(3,2)的值。

  

参考解答:

#include"stdio.h"
int Ackerman(int m,int n)
{
    //printf("n=%d, m=%d\n",n, m);
    if(m==0)
        return n+1;
    else if(n==0)
        return Ackerman(m-1,1);
    else
        return Ackerman(m-1,Ackerman(m,n-1));

}
int main()
{
    int n,m;
    scanf("%d%d",&m,&n);
    printf("%d\n",Ackerman(m,n));
    return 0;
}
  提示:执行程序求A(4,3),将类似陷入死循环。原因是递归的层次太多,计算机在急速运行中,直到内存耗尽。
  实际上,当m≥4,Ackermann函数的增长快得惊人。Ackermann(4,2)=2^65536-3有19729位,而Ackermann(4,3)则即使是位数也不易估计。
  计算机要求解这样的函数,也得另辟他径。





目录
相关文章
|
4天前
|
人工智能 安全 API
CoPaw:5分钟部署你的 AI助理
源自阿里巴巴开源生态的个人 AI 助理——CoPaw。作为阿里倾力打造的开源力作,CoPaw 完美打通钉钉、飞书、Discord 等多平台对话通道,支持定时任务自动化。内置 PDF/Office 深度处理、新闻摘要等强大技能,更开放自定义扩展接口。坚持数据全程私有化部署,绝不上传云端,让每一位用户都能在大厂技术加持下,拥有安全、专属的智能助手。
|
7天前
|
人工智能 自然语言处理 JavaScript
2026年Windows+Ollama本地部署OpenClaw保姆级教程:本地AI Agent+阿里云上快速搭建
2026年OpenClaw凭借本地部署、私有化运行的特性,成为打造个人智能体的核心工具,而Ollama作为轻量级本地大模型管理工具,能让OpenClaw摆脱对云端大模型的依赖,实现**本地推理、数据不泄露、全流程私有化**的智能体验。本文基于Windows 11系统,从硬件环境准备、Ollama安装与模型定制、OpenClaw部署配置、技能扩展到常见问题排查,打造保姆级本地部署教程,同时补充阿里云OpenClaw(Clawdbot)快速部署步骤,兼顾本地私有化需求与云端7×24小时运行需求,文中所有代码命令均可直接复制执行,确保零基础用户也能快速搭建属于自己的本地智能体。
8960 73
|
5天前
|
人工智能 安全 JavaScript
阿里云上+本地部署OpenClaw(小龙虾)新手攻略:解锁10大必备Skills,零基础也能玩转AI助手
2026年,开源AI代理工具OpenClaw(昵称“小龙虾”)凭借“能实际做事”的核心优势,在GitHub斩获25万+星标,成为现象级AI工具。它最强大的魅力在于可扩展的Skills(技能包)系统——通过ClawHub插件市场的数百个技能,能让AI助手从简单聊天升级为处理办公、学习、日常事务的全能帮手。
4183 9
|
6天前
|
人工智能 自然语言处理 机器人
保姆级教程:Mac本地搭建OpenClaw及阿里云上1分钟部署OpenClaw+飞书集成实战指南
OpenClaw(曾用名Clawdbot、Moltbot)作为2026年最热门的开源个人AI助手平台,以“自然语言驱动自动化”为核心,支持对接飞书、Telegram等主流通讯工具,可替代人工完成文件操作、日历管理、邮件处理等重复性工作。其模块化架构适配多系统环境,既可以在Mac上本地化部署打造私人助手,也能通过阿里云实现7×24小时稳定运行,完美兼顾隐私性与便捷性。
4371 9
|
8天前
|
人工智能 JSON JavaScript
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
手把手教你用 OpenClaw(v2026.2.22-2)+ 飞书,10分钟零代码搭建专属AI机器人!内置飞书插件,无需额外安装;支持Claude等主流模型,命令行一键配置。告别复杂开发,像聊同事一样自然对话。
4741 13
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
|
7天前
|
人工智能 监控 机器人
2026年零门槛部署 OpenClaw(Clawdbot)接入A股数据,实现24小时股票分析保姆级教程
在AI赋能金融分析的浪潮中,OpenClaw(原Clawdbot/Moltbot)凭借开源灵活的架构,成为个人投资者打造专属智能分析助手的首选。通过接入A股实时数据,它能实现24小时市场监控、涨跌预警、潜力股推荐等核心功能,彻底解放人工盯盘的繁琐。而阿里云的稳定部署环境,更让这套系统实现全天候不间断运行,成为真正的“金融AI助手”。 本文基于OpenClaw v2026.1.25稳定版与QVeris免费A股数据接口,详细拆解阿里云OpenClaw部署步骤、A股数据接入流程、高级分析功能配置及多平台联动技巧,所有代码命令均可直接复制复用,即使无技术基础也能在1小时内完成从部署到实战的全流程。
3400 11
|
3天前
|
人工智能 JavaScript Ubuntu
5分钟上手龙虾AI!OpenClaw部署(阿里云+本地)+ 免费多模型配置保姆级教程(MiniMax、Claude、阿里云百炼)
OpenClaw(昵称“龙虾AI”)作为2026年热门的开源个人AI助手,由PSPDFKit创始人Peter Steinberger开发,核心优势在于“真正执行任务”——不仅能聊天互动,还能自动处理邮件、管理日程、订机票、写代码等,且所有数据本地处理,隐私完全可控。它支持接入MiniMax、Claude、GPT等多类大模型,兼容微信、Telegram、飞书等主流聊天工具,搭配100+可扩展技能,成为兼顾实用性与隐私性的AI工具首选。
1763 6