首页 > 编程语言 >c++打卡第五天

c++打卡第五天

时间:2023-04-14 22:15:57浏览次数:29  
标签:调用 obj val int c++ 嵌套 打卡 第五天 getPower

嵌套和递归 一、嵌套调用。   1、嵌套调用是指在一个函数中调用另一个函数,也可以在一个类中使用另一个类作为成员变量。   2、实例   ①函数成员调用

#include<iostream>
using namespace std;
int fa2(int a)
{
    return a+1;
}
int fa1(int n)
{
    return 2*fa2(n);
}
int main()
{
    int n;
    cin>>n;
    cout<<fa1(n)<<endl;
    return 0;
}

上述输入n后先调用fa1函数,进入fa1函数后继续调用fa2函数,这就是嵌套调用函数。输入n=2,结果为6。

  ②类成员嵌套使用

class A {
public:
    int val_a;
};

class B {
public:
    A obj_a;

    void set_a_val(int val) { obj_a.val_a = val; }
};

class C {
public:
   B obj_b;

   void set_b_val(int val) { obj_b.set_a_val(val); }
};

int main()
{
    C obj_c;
    obj_c.set_b_val(10);

    cout << "obj_c.obj_b.obj_a.val_a = " << obj_c.obj_b.obj_a.val_a << endl;  // 输出 obj_c.obj_b.obj_a.val_a = 10
}

在上述代码中,类 `B` 中使用了类 `A` 的对象作为成员变量,而类 `C` 又使用了类 `B` 的对象作为成员变量。我们可以通过调用 `obj_c.set_b_val(10)` 方法来设置 `obj_c` 对象中嵌套的类成员的值,并最终输出结果为 `obj_c.obj_b.obj_a.val_a = 10`。

以上就是 C++ 中嵌套调用的两种方式的简单介绍。

二、递归。

    递归指的是在一个函数的定义中调用自身的过程。通常来说,递归可以让我们更简单地描述一些复杂的问题和计算过程。在递归过程中,每次调用会将问题分解成更小的子问题并进行求解,最终得到整个问题的解。递归需要注意结束条件,否则可能会导致无限嵌套调用自身而造成程序崩溃或者死循环。通过以下一个实例来具体说明一下。

1、问题描述。

 编写递归函数getPower计算x的y次方,在同一个程序中针对整形和实型实现两个重载函数:

int getPower(int x,int y);

double getPower(double x,int y);

在主程序中实现输入输出,分别输入一个整数a和一个实数b作为底数,再输入一个整数m作为指数,输出a的m次方和b的m次方。

2、设计思路

    输入待计算的底数x和指数y,进入调用函数,返回底数同时乘以函数(x,y-1),当y为1或者0时 返回最终值。

3、流程图

 

 4、代码实现

#include<iostream>
using namespace std;
int getPower(int x,int y)
{
    if(y==0)
    {
        return 1;
    }
    if(y>0)
    {
    return x*getPower(x,y-1);
    }
}
double getPower(double x,int y)
{
    if(y==0)
    {
        return 1;
    }
    if(y>0)
    {
    return (1.0)*x*getPower(x,y-1);
    }
}
int main()
{
    int a,k;
    double b;
    cin>>a;
    cin>>b;
    cin>>k;
    int r1;
    double r2;
    r1=getPower(a,k);
    r2=getPower(b,k);
    cout<<r1<<endl;
    cout<<r2<<endl;
    return 0;
}

5、结果实现

 

 

标签:调用,obj,val,int,c++,嵌套,打卡,第五天,getPower
From: https://www.cnblogs.com/zzqq1314/p/17320075.html

相关文章

  • c++基本数据结构
    基本数据结构:一.线性表1.顺序结构线性表可以用普通的一维数组存储。你可以让线性表可以完成以下操作(代码实现很简单,这里不再赘述):返回元素个数。判断线性表是否为空。得到位置为p的元素。查找某个元素。插入、删除某个元素:务必谨慎使用,因为它们涉及大量元素的移动。......
  • c/c++快乐算法第一天
    c/c++感受算法乐趣(1)开始时间2023-04-14 18:31:47结束时间2023-04-14 22:06:02前言:经过两天的学习,是不是发现编程也挺简单的。其实不然,学好算法同时也是练习编程的关键一环。接下来每周末我将会带领你感受算法的乐趣。目前题目摘自c语言趣味编程100例清华大学出版社,我会根据编......
  • 每日打卡
    #include<iostream>冒泡排序usingnamespacestd;#defineN10intmain(){ intarr[N]={1,4,6,3,0,2,5,9,8,7}; Bubble_Sort(arr,10); for(inti=0;i<N;i++) { cout<<arr[i]<<","; } cout<<endl; return0;}voidBubbl......
  • 天天打卡一小时——1
    一.问题描述输入一个年份,判断是否闰年二.设计思路1.闰年的概念:能被4整除却不能被100整除或能被400整除的年份就是闰年2.输入一个数字代表年份3.若这个数字可以被4或400整除则将这个数存储到变量year中,为闰年;反之不是闰年三.程序流程图  四.代码实现#include<iostream......
  • 打卡5
    1.10数制转换    #include<bits/stdc++.h>usingnamespacestd;intsource,object,length;//储存原数,村拿出目标数值,存储字符串长度longdecimal_num;//存储十进制chartemp[1000];//存转换后的数值intflag=1;//是否退出的标志/*将字符转换为数字*/intchar_to......
  • C++第三章课本例题
    游戏规则是:每个骰子有6面,点数分别为1、2、3、4、5、6。游戏者在程序开始时输入个无符号整数,作为产生随机数的种子。每轮投两次骰子,第一轮如果和数为7或11则为胜,游戏结束;和数为2、3或12则为负,游戏结束;和数为其他值则将此值作为自己的原数,继续第二轮、第三轮……直到某轮的和数等于......
  • 趣味打卡第一天(包装机)
    包装机用到栈和队列:注意要找准用栈还是队列,栈要注意段错误#include<bits/stdc++.h>usingnamespacestd;intmain(){stack<char>kuang;//用栈模拟框(容易理解)queue<char>a[1000];//用队列模拟轨道(它是按键盘的输入顺序输出的,是先进先出)intm,n,s;cin>>n>>m>>s;......
  • C++复习第六天(继承、多态)
    vector.clear()将size设置为0,capacity不变 继承//公共页面classBasePage{public:voidheader(){cout<<"首页、公开课、登录、注册...(公共头部)"<<endl;}voidfooter(){cout<<"帮助中心、交流合作、站内地图...(......
  • C++第四天
    定义一个CPU类,包含等级(Rank)、频率(frequency)、电压(voltage)等属性。其中,rank为枚举类型CPU__Rank,定义为enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。代码#include<iostream>usingnamespacestd;enumCPU_Rank{P1=1,P2,P3,P......
  • 打卡3
      #include<stdio.h>intmain(){  intyear,month,day,x,a;  intye=2010;  intsum=0;  inti[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//建立平年各月份天数的数组  intj[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};//建立闰年各月份天数的数......