真·画个圆圈诅咒你

该博客展示了一个C++程序,使用递归函数计算斐波那契数列,并输出过程中圆圈诅咒的数量和总数。递归函数f()通过f(sum - 1)和f(sum - 2)计算f(n),并根据输入的整数n输出相应的斐波那契数和计数信息。

#include<bits/stdc++.h>
using namespace std;
unsigned long long cnt = 0,num = 0;
void print(unsigned long long ci){
    for(unsigned long long i = 0;i <= ci;i++){
        num++;
        cout<<num<<":画个圆圈诅咒你!"<<endl;
    }
    cnt++;
}
int f(unsigned long long sum){
    print(sum);
    if(sum == 0){
        return 1;
    }
    if(sum == 1){
        return 2;
    }
    return f(sum - 1) + f(sum - 2);
}
int main(){
    int n;
    cin>>n;
    cout<<f(n)<<endl<<cnt<<" "<<num<<endl;
    return 0;

### QT绘制圆圈的方法 在QT中,可以使用`QPainter`类来绘制圆圈。以下是基于提供的引用内容和相关知识的一个完整示例代码,展示如何在QT中绘制一个简单的圆圈。 ```cpp #include <QWidget> #include <QPainter> #include <QPaintEvent> class CircleWidget : public QWidget { public: CircleWidget(QWidget *parent = nullptr) : QWidget(parent) {} protected: void paintEvent(QPaintEvent *event) override { Q_UNUSED(event); QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); // 启用抗锯齿 // 设置笔颜色为黑色,宽度为2 painter.setPen(QPen(Qt::black, 2)); // 设置刷为蓝色填充 painter.setBrush(QColor(0, 0, 255)); // 绘制圆圈,参数分别为:圆心坐标(x, y),半径 painter.drawEllipse(this->width() / 2 - 50, this->height() / 2 - 50, 100, 100); } }; ``` 上述代码创建了一个名为`CircleWidget`的自定义控件,并重写了`paintEvent`方法。在`paintEvent`中,使用`QPainter`绘制了一个蓝色填充、黑色边框的圆圈[^1]。 #### 参数说明 - `drawEllipse(int x, int y, int width, int height)`:绘制椭圆或圆圈。当`width`和`height`相等时,绘制的是一个圆。 - `setPen(QPen pen)`:设置笔样式,用于定义线条的颜色、宽度和风格。 - `setBrush(QBrush brush)`:设置刷样式,用于定义填充区域的颜色和图案。 ### 示例扩展 如果需要绘制多个圆圈或者动态调整圆圈的位置和大小,可以参考以下扩展代码: ```cpp void paintEvent(QPaintEvent *event) override { Q_UNUSED(event); QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); int offsetDest = (this->width() - 30) / 2; // 计算偏移量 painter.setPen(Qt::NoPen); // 不绘制边框 for (int i = 0; i < 12; ++i) { QPoint point(0, 0); painter.setBrush(QColor(73, 124, 255)); // 设置蓝色填充 point.setX(offsetDest * qSin((i) * M_PI / 6)); point.setY(offsetDest * qCos((i) * M_PI / 6)); painter.drawEllipse(point.x() - 10, point.y() - 10, 20, 20); // 绘制小圆 } } ``` 此代码片段展示了如何在窗口中绘制12个小圆圈,并将它们均匀分布在圆形路径上[^2]。 ### 注意事项 - 在绘制图形时,建议启用`QPainter::Antialiasing`以获得更平滑的边缘效果。 - 如果需要动态更新圆圈的属性(如位置、大小或颜色),可以通过重绘机制调用`update()`函数触发重新绘制[^3]。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值