当前位置: 首页 > news >正文

《C语言及程序设计》实践参考——递归函数

返回:贺老师课程教学链接

【项目-递归函数】
(1)立方累加和:用递归函数求f(n)=13+23+...+n3,要求先将f(n)数学表达式表示成递归的形式,然后再编程序实现。
[参考解答]
递归公式:

f(n)={1,n3+f(n1),n=1n>1

参考程序:
#include <stdio.h>
int cube(int n);
int main()
{
    int n;
    scanf("%d",&n);
    printf("f(n)=%d\n", cube(n));
    return 0;
}

int cube(int n)
{
    if (n==1)
        return 1;
    else
        return n*n*n+cube(n-1);
}

(2)写出求13...n的递归式,并编写出递归函数求解。
[参考解答]
递归公式:

f(n)={1,nf(n2),n=1n1

参考程序:
#include <stdio.h>
long f(int);
int main( )
{
    int n;
    long y;
    printf("请输入一个数 :");
    scanf("%d", &n);
    if(n%2) //若奇数
        y=f(n);
    else
        y=f(n-1);
    printf("%d以内的奇数积是:%ld\n", n, y);
    return 0;
}

long f(int n)
{
    long s;
    if (n==1)
        s=1;
    else
        s=f(n-2)*n;
    return s;
}

(3)编程序,用递归函数求出两个数的最大公约数。(包括编main函数,调用定义的递归函数)
[参考解答]

#include <stdio.h>
int gcd(int x, int y);
int main()
{
    int m,n;
    printf("输入两个数字:");
    scanf("%d %d", &m, &n);
    printf("最大公约数:");
    printf("%d\n", gcd(m,n));
    return 0;
}

int gcd(int a, int b)
{
    int t, g;
    //if (a < b) t=a,a=b,b=t;   //无所谓大小
    if (b==0)
        g=a;
    else
        g=gcd(b,a%b);
    return g;
}

(4)编一个程序,读入具有5个元素的实型数组,然后调用一个函数,递归地找出其中的最大元素,并指出它位置。
[参考解答]

#include<stdio.h>
int find(int a[],int n)
{
    int m;
    if(n==0)
        return a[0];
    else
    {
        m=find(a,n-1);
        return (m>a[n]?m:a[n]);
    }

}
int main()
{
    int a[5],i;
    for(i=0; i<5; i++)
        scanf("%d",&a[i]);
    printf("%d",find(a,4));
    return 0;
}

相关文章:

  • CSS空白符处理!
  • SQL判断一个数是整数还是小数
  • 第9章 Spring Boot开发者工具
  • Objective C多态
  • Hadoop 架构简介
  • 创业路(VC Pipeline),创业需要融资的阅读
  • 令人血脉喷张的animate.css
  • quartz+spring定时任务常见错误总结
  • HTML 超链接a的几种用法
  • java_JDBC(4)
  • svnserver搭建
  • Android视图绘制流程完全解析,带你一步步深入了解View(二)
  • OTS工作坑
  • GDB调试详解
  • Tomcat和JavaWeb目录和流程
  • android 一些 utils
  • JavaScript中的对象个人分享
  • JavaWeb(学习笔记二)
  • JAVA之继承和多态
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • 大主子表关联的性能优化方法
  • 前端代码风格自动化系列(二)之Commitlint
  • 一些css基础学习笔记
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • ​520就是要宠粉,你的心头书我买单
  • ​Spring Boot 分片上传文件
  • "无招胜有招"nbsp;史上最全的互…
  • # 数论-逆元
  • #HarmonyOS:Web组件的使用
  • #if和#ifdef区别
  • (12)Linux 常见的三种进程状态
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (day 12)JavaScript学习笔记(数组3)
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (Python) SOAP Web Service (HTTP POST)
  • (二)丶RabbitMQ的六大核心
  • (二十三)Flask之高频面试点
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (排序详解之 堆排序)
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (三)终结任务
  • (五)MySQL的备份及恢复
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .Net 6.0 处理跨域的方式
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET Core引入性能分析引导优化
  • .NET Framework与.NET Framework SDK有什么不同?
  • .Net IOC框架入门之一 Unity
  • .NET 依赖注入和配置系统
  • .NET 中的轻量级线程安全
  • .sys文件乱码_python vscode输出乱码