rand在n和m之间选择

时间:2010-07-21 14:21:27

标签: c++

这里是编程珍珠的代码,这段代码以递减的形式打印随机数

void randselect(m,n){
pre 0<=m<=n;
poset : m  distinct integers  from 0 ...n-1  printed in decreasing form
 if (m>0) 
 if ( bigrand() %n)<m
 print n-1//here i dont understand print  n-1 what means?printf(n-1) or?i will show code
 randselect(m-1.n-1);
else
 randselect(m,n-1)

还有另一个问题: 如何打印它增加订单?这里是有错误的代码

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using std::cout;
using std::printf;
using namespace std;

int bigrand(){  return RAND_MAX*rand()+rand();}

void randselect(int n,int m)
{
  if (m>0)
     if (bigrand()%n<m)
     {
         printf("",n-1);
         randselect(m-1,n-1);
     }
     else{
         randselect(m,n-1);
     }
}
int main()
{
  int m,n;

  cin>>n>>m;
  randselect(n,m);

  return 0;
}

请帮助它不会根据主代码向我显示任何输出我代码中的错误是什么?

2 个答案:

答案 0 :(得分:1)

你的printf只打印出空字符串。试试printf("%d", n-1)

答案 1 :(得分:1)

您的输出问题是printf("",n-1);,它没有格式说明符,因此对剩余的函数值没有任何作用。

将其更改为printf("%d\n", n - 1);,每行打印一个整数(%d\n)。