C - 喵帕斯之天才算数少女

这篇博客主要介绍了如何解决一个基于递归定义的数学问题,函数F(m,n)。给定的C语言代码实现了该函数,并通过输入m和n计算出F(m,n)的值。示例展示了对于不同输入,如(3,2),(3,10)和(2,1),程序如何输出对应的答案29,8189和5。此问题考察了递归算法的理解和应用。
摘要由CSDN通过智能技术生成

Description

莲酱要上一年级了,但是老师给他出了一个特别难的算术题。

老师给出了一个函数 

F(m, n)的定义是:

若m=0,返回n+1。

若m>0且n=0,返回F(m-1,1)。

若m>0且n>0,返回F(m-1,F(m,n-1))。

给出 m 和 n,计算 F(m, n) 的值。

Input

第一行输入一个整数 t, 代表有 t 组数据。(1 <= t <= 15)

每组数据输入一行,包含两个非负整数 m,n。(0 <= m <= 3, 0 <= n <= 10)

Output

每组数据输出一行,为 F(m, n) 的答案。

Sample

Input 

3
3 2
3 10
2 1

Output 

29
8189
5
#include<stdio.h>
#include<stdlib.h>

int f(int m, int n){
    int fmn;
    if(m == 0){
        fmn = n + 1;
    }
    else if(m > 0 && n == 0){
        fmn = f(m - 1, 1);
    }
    else if(m > 0 && n > 0){
        fmn = f(m - 1, f(m, n - 1));
    }
    return fmn;
}
int main(){
    int i, t, n, m, fmn;
    scanf("%d", &t);
    for(i = 0; i < t; i++){
        scanf("%d %d", &m, &n);
        fmn = f(m, n);
        printf("%d\n", fmn);
    }
    return 0;
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员豪仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值