请教高手 算法实现问题

飞翔的胖哥哥 2009-12-18 09:17:15
c++编程

用F(n)表示递归层次为n的图形。
当n = 1时,F(n) =“*”。
当n ≥ 2时,F(n)的图形由以下方法得到:首先将F(n-1)的图形复制三遍,然后把中间
的1/3的字符逐个替换为字符‘#’。
例如:当n = 1时,图形F(n)为:

n=1时输出为 *
n=2时输出为 *#*
n=3时输出为 *#*###*#*
。。。。
。。。
。。。
...全文
44 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞翔的胖哥哥 2009-12-18
  • 打赏
  • 举报
回复
感谢,thanks
sageking2 2009-12-18
  • 打赏
  • 举报
回复

#include<stdio.h>
#include<math.h>
void F(int n)
{
double i=0.0;
if(n==1)
{
putchar('*');
}
else
{
F(n-1);
for(i=0.0;i<pow(3.0,n-2);i++)
{
putchar('#');
}
F(n-1);
}
}
int main()
{
int n;
scanf("%d",&n);
F(n);
return 0;
}

算法很简单,不需要什么高手,自己改成C++去吧。
zengwujun 2009-12-18
  • 打赏
  • 举报
回复
1。先把*变换为1,#变换为0,那么
2。
F(1) = 1
F(2) = 101
F(3) = 101 000 101
F(n) = F(n-1) << (2*(n-1)) + F(n-1);
3. 把F(n)转为图形,1变为*,0变为#

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧