20200715

1、在屏幕上输出如下图形 键盘输入n,比如输入3如下

          *

        *   *

      *   *   *

2、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

/*
* @param hight  100米起始高度
* @param n      跳跃的次数
* @param sum    当前跳跃次数
* @param sumHight 当前经过总高度
*/
void persent50(double hight, int n, int sum, double sumHight)
{
    if (n == 1)//次数为1时特殊处理
    {
        printf("%.5f\n", hight);
        printf("%.5f\n", sumHight + (hight + (hight / 2.0)));
    }
    else
    {
        if (sum <= n)//当前递归次数sum小于n,继续递归
        {
            double temp = sumHight + (hight + (hight / 2.0));
            persent50(hight / 2.0, n, ++sum, temp);
        }
        else
        {
            printf("%.5f\n", hight);
            printf("%.5f\n", sumHight);
        }
    }
}

在这里插入图片描述

3、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

/*
* @param a  分子
* @param b  分母
* @param n  总项数
* @param x  当前递归次数
* @param sum 总和
*/
void test3(double a, double b, int n, int x, double sum)
{
    if (n == 1)
    {
        printf("0.5");
    }
    else
    {
        
        if (x < n)
        {
            double ab = a / b;
            double temp = sum + ab;

            test3(a + b, a, n, ++x, temp);
        }
        else
        {
            printf("%.5f\n", sum+a/b);
        }
    }
}

在这里插入图片描述

4、求1+2!+3!+…+10!的和。

/*
* @param n    阶乘到几结束,比如本题要求,就输入10。
* @param sum  当前和
* @param x    当前递归次数
*/
void test4(int n,int sum, int x){
    int temp=1;
    for (int i = 1; i <= x; i++)
    {
        temp *= i;
    }
    if (x<=n)
    {
        test4(n,sum+temp,++x);
    }else{
        printf("%d\n",sum-1);
    }
}

在这里插入图片描述

5、求100 ~ 200 之间所有的素数。

void test5()
{
    for (int i = 100; i < 201; i++)
    {
        if (i%2==0 || i%3==0 || i%5==0 ||i%7==0 || i%11==0||i%13==0)
        {
            continue;
        }
        else
        {
            printf("%d\n",i);
        }
        
    }
}

在这里插入图片描述

6、输出星号组成的菱形。

void test6()
{
    for (int i = 1; i < 6; i++)
    {
        for (int j = 1; j < 6; j++)
        {
            if (i <= 3)
            {
                if (j >= (3 - i + 1) && j <= (3 + i - 1))
                {
                    printf("*");
                }
                else
                {
                    printf(" ");
                }
            }
            else
            {
                if (j > i-3)
                {                 
                    printf("*");
                    if (j==4)
                    {
                        break;
                    }
                    if (i==5 && j==3)
                    {
                        break;
                    }
                    
                }
                else
                {
                    printf(" ");
                }
            }
        }
        printf("\n");
    }
}

在这里插入图片描述

7、我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第150个丑数。(如果找第1500个)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值